项目的创建和配置: 1.新建一个 Win32 空项目 2.创建源码文件夹.库文件夹和资源文件夹 3.在 VS2013(我使用的 IDE 是 vs2013)配置这些文件夹 这里使用了 $(SolutionDir) 宏来指定上面创建的文件夹,因为使用的不是绝对路径,所以将项目拷贝到其他文件夹或电脑也可以正确读取.通过上面的设置,告诉程序去哪找到源码文件和库文件. 创建窗口: 创建窗口有几个固定的步骤,只要按照这些步骤来就好了,下面是创建的代码 HWND Create() { /* 设计窗口类 */…
这个项目主要是为了 DirectX11 而来,前面做了一个关于 OpenGL 的项目,这次打算使用 DirectX11 来做一个 MMD 的模型浏览器.以前,我使用过 DirectX11 来做过一些项目,但都半途而废了.在做完 Simple2D 后,现在决定使用 DirectX11 来做一个简单的模型浏览器——MMDViewer. 当然,这个项目究竟会怎么样我也不清楚,里面涉及到的很多知识我以前也没有学习过.就像 Simple2D 那样,本来打算花一两周完成的,后来发现它超出了我的知识范围.中间…
上篇文章给出了一个简单并且可以运行的渲染框架,接下来将介绍框架中的渲染管线构成. 1.创建渲染管线 在你创建完一个窗口后,接着便要创建渲染管线,使用的函数是 D3D11CreateDeviceAndSwapChain, 交换链: 要创建交换链,必须先设置交换链描述.交换链描述定义了将由交换链使用的渲染缓冲区的大小和数量.它还将窗口与交换链相关联,从而确定最终图像的显示位置.交换链描述还定义了该应用的消除锯齿(如果有的话)的质量以及在展示过程中后端缓冲区的翻转方式. UINT create_dev…
准备工作: 开始搭建框架之前,你需要确保已经进行了 D3D 开发环境的搭建,相关教程可以阅读这篇文章.不了解 DirectX11 的人,这个作者有关 DirectX11 的教程最好阅读一下,虽然文章不多,但都很详细,有了基础以后在进行深一步的扩展. 和 OpenGL 一样,在渲染出图形之前,都需要经过很多步骤(窗口配置.图形上下文的创建.顶点数据配置.着色器的配置.变换矩阵配置等等),不是一两行代码就可以了.而 DirectX11 则更为复杂,其中如果发生一点错误,将导致图形渲染失败,但你难以检…
import win32con,win32gui class MyWindow(): def __init__(self): #注册一个窗口类 wc = win32gui.WNDCLASS() wc.lpszClassName = 'MyWindow' wc.hbrBackground = win32con.COLOR_BTNFACE+1 #这里颜色用法有点特殊,必须+1才能得到正确的颜色 wc.lpfnWndProc = self.wndProc #可以用一个函数,也可以用一个字典 class…
OpenGL 作为一个图形接口,并没有包含窗口的相关内容,但OpenGL使用必须依赖窗口,即必须在窗口中绘制.这就要求我们必须了解一种窗口系统,但不同的操作系统提供的创建窗口的API都不相同,如果我们在学习OpenGL时要去学习一整套的窗口系统,这将带来很多的不便,所以出现了GLUT.GLUT全称OpenGL Utility Toolkit,是一套和窗口系统无关的软件包,为我们提供了窗口创建,用户输入输出处理等功能.优点是:简小,精悍.注意GLUT并不是一个功能特别全面的窗口系统工具包,所以构建…
下面我们一起来创建一个背景为蓝色的窗口作为游戏编程的开始: import sys import pygame def creat_screen(): #初始化pygame pygame.init() #设置窗口大小并保存在screen对象中 screen = pygame.display.set_mode((500,500)) #设置窗口的名字 pygame.display.set_caption("My First Screen") #游戏的主循环 while True: #给屏幕填…
原文地址:http://ogldev.atspace.co.uk/ 原文中使用gnu make进行项目管理,本系列文章使用visual studio2012.在翻译过程中并非直译,加入了一些笔者个人观点. OpenGl官方使用规范中并没有提供创建和操作窗口的API,目前像window.linux等支持图形化界面的操作系统都支持OpenGl,提供一个与OpenGl上下文绑定的窗口系统.例如在X window中可以使用GLX创建窗口,Windows平台和MacOS平台则可以分别使用WGL.CGL.直…
该方案将在进一步的程序 面向对象. 独立的模型类.更像是一个框架. 其中以超过遇到了一个非常有趣的问题,.获得一晚.我读了好几遍,以找到其他的列子.必须放在某些功能Render里面实时更新,而不是仅仅进入初始化InitModel里边 染多个物体的时候,缓冲区的内容是要随设备变化的. 话不多说直接上代码 主程序main #include "D3DBase.h" #include "Axis.h" #include "Cube.h" class D3…
打开Vs2012[我的是2012] /* X下面这些东西并没有什么用... 就不改了用2013 2015都一样 当然 devC++ 还有最原始的那个vc6.0也都是可以的. 编译环境遇到了相关问题网上搜索一下就可以解决的.最重要的是相信自己是可以解决的. 我就遇到了PDB加载不了的状况. 解决方案:http://jingyan.baidu.com/article/90bc8fc87fbafff653640ca6.html [开始用的 DEVC++] */ 二.新建项目 三. 下一步点选空项目:…