directX游戏编程实验二

合集下载

Directx9实验

Directx9实验

实验一实验题目:Directx的初始化实验目的:了解Win32程序基本框架及最简单的Directx 3D的程序框架。

实验步骤:(1)解压BookPart2Code.zip文件,打开Chapter1中的D3D9 Init目录下的d3dInit.cpp文件。

(2)从VC2008中为d3dInit.cpp新建一个项目,进行正确配置,解决编译和连接中的错误,并运行看结果。

(3)修改程序,使之运行在全屏幕方式,即无窗口模式。

(4)修改程序,使程序再回到窗口模式,并使得窗口的标题栏出现最小化(Minimize)、复原(Restore)和关闭(Close)图标,并使标题栏显示的字符串为你的姓名。

(5)修改程序,使得程序工作在软件模拟方式。

(6)修改程序改变窗口的分辨率和颜色格式。

(7)给窗口增加一个菜单(File下有一个Exit),并使之响应菜单上的Exit退出消息。

参考上课时讲的Dx9Ex1。

(8)修改程序,利用Clear()使之出现蓝色背景。

参考上课时讲的Directx SDX的第一个例子CreateDevice。

(9)修改程序,利用IDirect3DSurface9创建一个表面,并使它显示红色。

参考教案的46页,注意Back Buffer就是一个IDirect3DSurface9,要锁定Back Buffer,需要修改D3DPRESENT_PARAMETERS的Flags标志,参考MSDN。

实验二实验题目:坐标系、顶点、索引与网格实验目的:了解三维建模的三种方式:顶点、索引与网格;掌握三维到二维图形的的3个步骤:建模坐标系到世界坐标系的变换,照相机的位置、朝向和向上正方向的设置,三维世界投影到照相机的二维成像平面。

实验步骤:(1)打开Chapter3中的Triangle目录下的triangle.cpp文件,并为它建立一个工程文件。

修改源程序,增加建模坐标系到世界坐标系的变换,任意设置(x,y,z),运行观察结果;增加照相机的世界坐标系变换,改变其中的z坐标,运行观察结果。

Windows编程实验二实验报告

Windows编程实验二实验报告

Windows编程实验二实验报告一、实验目的本次 Windows 编程实验的目的在于深入了解和掌握 Windows 应用程序的开发流程,通过实际编程操作,提高对 Windows 消息机制、窗口处理、图形绘制等方面的理解和应用能力。

二、实验环境操作系统:Windows 10开发工具:Visual Studio 2019编程语言:C++三、实验内容1、窗口创建与消息处理创建一个基本的 Windows 窗口,并实现对窗口消息(如WM_CREATE、WM_PAINT、WM_DESTROY 等)的处理。

通过响应这些消息,完成窗口的初始化、绘制和关闭操作。

2、图形绘制在窗口客户区进行简单的图形绘制,如直线、矩形、圆形等。

掌握GDI(图形设备接口)的基本绘图函数和操作方法。

3、菜单与控件添加菜单到窗口,并处理菜单命令消息。

同时,尝试在窗口中添加一些基本的控件,如按钮、编辑框等,并实现相应的交互功能。

四、实验步骤1、创建项目打开 Visual Studio 2019,创建一个新的 Windows 桌面应用程序项目。

选择 C++作为编程语言,并按照向导进行设置,包括项目名称、存储位置等。

2、窗口类定义定义一个窗口类(WNDCLASS),设置窗口的样式、窗口过程函数指针等属性。

```cppWNDCLASS wndClass ={ 0 };wndClasslpfnWndProc = WndProc;wndClasshInstance = hInstance;wndClasslpszClassName = L"MainWindowClass";RegisterClass(&wndClass);```3、窗口创建与显示使用`CreateWindow` 函数创建窗口,并通过`ShowWindow` 和`UpdateWindow` 函数显示窗口。

```cppHWND hWnd = CreateWindow(L"MainWindowClass",L"Windows Programming Experiment",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,NULL, NULL, hInstance, NULL);ShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd);```4、消息循环在主函数中,通过一个无限循环来获取和分发窗口消息。

实验二 DirectX渲染及图形绘制实验

实验二 DirectX渲染及图形绘制实验

实验二DirectX渲染及图形绘制实验一、实验目的1、理解渲染管道的概念,知道利用几何方法描述三维场景的步骤以及怎样获得用于描述三维场景的二维图像。

2、理解Display函数的作用及参数的意义。

3、理解D3DXMatrixPerspectiveFovLH()函数的参数的意义。

4、了解Direct3D是如何存储顶点数据和索引数据的。

5、了解Setup函数的作用。

二、实验内容:项目1:DirectX渲染管道实验在例程Cube的基础上,完成以下步骤:1.修改Display函数中物体的旋转变换矩阵,使三维模型不再旋转。

2.修改摄像机位置坐标、观察点坐标、向上向量的值,记录以下状态时的值:a)远距离拍摄。

b)近距离拍摄。

c)平面旋转90度。

3.修改变换矩阵的创建参数,即D3DXMatrixPerspectiveFovLH()函数的参数,观察并记录以下参数对应的画面:a)近平面距离设为1000,远平面距离设为1000。

b)近平面距离设为1,远平面距离设为5。

c)近平面距离设为1,远平面距离设为1000。

d)宽高比:(float)width*1.5/(float)heighte)宽高比:(float)width*0.5/(float)heightf)宽高比:(float)width/(float)height项目2:DirectX图形绘制实验在例程Cube的基础上,完成以下步骤:1.修改8个顶点中任一个一个顶点的值,观察并记录画面。

2.增加一个顶点数据(第9个顶点),具体值为:(2.0f,1.0f,1.0f)。

观察并记录画面。

此处需要注意顶点缓冲区创建的缓冲区大小参数为9个顶点(Vertex)。

3.增加一个三角形数据,即三个索引缓冲区,具体值为:6,7,8。

观察并记录画面。

此处需要注意索引缓冲区创建的缓冲区大小参数为39个索引(WORD)。

4.再增加两个三角形数据,具体值为自行设定,观察并记录画面。

此处需要注意索引缓冲区创建的缓冲区大小参数为39+6个索引(WORD)。

directX游戏编程实验四吴凉凉-2012329700012

directX游戏编程实验四吴凉凉-2012329700012

浙江理工大学《DirectX 游戏编程》实验报告2013 ~2014学年第 1学期学 院班 级姓 名学 号 任课教师(上课时间:第10周345节)数字媒体技术专业20 14 年 5 月 15日Device->SetMaterial(&mtrl);黄色材质设定。

1、实现平行光照明。

D3DLIGHT9 dir;::ZeroMemory(&dir, sizeof(dir));dir.Type = D3DLIGHT_DIRECTIONAL;dir.Diffuse = d3d::WHITE;dir.Specular= d3d::WHITE * 0.3f;dir.Ambient= d3d::WHITE * 0.6f;dir.Direction= D3DXVECTOR3(1.0f, 0.0f, 0.0f);Device->SetLight(0, &dir);Device->LightEnable(0,true);Device->SetRenderState(D3DRS_NORMALIZENORMALS, true);Device->SetRenderState(D3DRS_SPECULARENABLE,true);将语句:Device->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME);注释后得3、增加一个蓝色点光源。

D3DXVECTOR3 pos(0.0f, 0.0f, 5.0f);D3DXCOLOR c = d3d::BLUE;D3DLIGHT9 point = d3d::InitPointLight(&pos, &c);Device->SetLight(1, &point);Device->LightEnable(1,true);4、实现材质设定的透明度,实现50%透明度。

DirectX实验二报告

DirectX实验二报告

实验二DirectX渲染及图形绘制实验实验报告项目1:DirectX渲染管道实验在例程Cub的基础上,完成以下步骤:1.修改Display函数中物体的旋转变换矩阵,使三维模型不再旋转。

2.修改摄像机位置坐标、观察点坐标、向上向量的值,记录以下状态时的值:a)远距离拍摄。

b)近距离拍摄。

c)平面旋转90度。

3.修改变换矩阵的创建参数,即D3DXMatrixPerspectiveFovLH()函数的参数,观察并记录以下参数对应的画面:a)近平面距离设为1000,远平面距离设为1000。

b)近平面距离设为1,远平面距离设为5。

c)近平面距离设为1,远平面距离设为1000。

d)宽高比:(float)width*1.5/(float)heighte)宽高比:(float)width*0.5/(float)heightf)宽高比:(float)width/(float)height1、修改Display函数中物体的旋转变换矩阵,使三维模型不再旋转。

操作截图如下:修改后的运行结果截图如下:2、修改摄像机位置坐标、观察点坐标、向上向量的值,记录以下状态时的值:a) 远距离拍摄。

操作代码:运行结果:b)近距离拍摄。

操作代码:运行结果:c) 平面旋转90度。

操作代码:运行结果:3、修改变换矩阵的创建参数,即D3DXMatrixPerspectiveFovLH()函数的参数,观察并记录以下参数对应的画面:(在第二步的基础上)a) 近平面距离设为1000,远平面距离设为1000。

操作代码:结果窗口画面一片空白。

b) 近平面距离设为1,远平面距离设为5。

操作代码:运行结果:c) 近平面距离设为1,远平面距离设为1000。

操作代码:结果与上图一样。

d) 宽高比:(float)width*1.5/(float)height操作代码:运行结果:e) 宽高比:(float)width*0.5/(float)height 操作代码:运行结果:g) 宽高比:(float)width/(float)height操作代码:运行结果:项目2:DirectX图形绘制实验在例程Cub的基础上,完成以下步骤:1.修改8个顶点中任一个一个顶点的值,观察并记录画面。

directX游戏编程实验

directX游戏编程实验

任课教师:张海翔《DirectX角色游戏编程》(2011-2012学年第2学期)实验报告学号:E10700206姓名:吴慧峰班级:10数媒(2)班浙江理工大学信息学院实验指导书实验名称:DirectX三维文字场及地形景实验学时安排:3实验类别:综合设计型实验实验要求:1人1组 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄一、实验目的(1) 通过实验,运用DirectX三维图形编程的知识、原理和技术;(2) 掌握在综合三维场景的基础上,设计一个三维文字及地形的实现方法;(3) 通过使用VC++编程环境实现三维场景中的三维文字及地形的设计。

二、实验仪器计算机,VC++2005语言程序设计环境和DirectX 三维图形开发环境三、实验原理D3DX库是使用ID3DXFont接口来在Direct3D应用程序中输出文字的。

这个接口通过GDI(图形设备接口)来输出文字,因此用这个接口完成任务的时候会有些效率上的损失。

但是,运用了GDI,ID3DXFont可以处理复杂的文字和文字格式。

在DirectX中通过D3DXCreateFontIndirect方法来创建一个ID3DXFont接口:HRESULT WINAPI D3DXCreateFontIndirect(LPDIRECT3DDEVICE9 pDevice, // 当前所使用的设备CONST D3DXFONT_DESC *pDesc, // 字体描述结构LPD3DXFONT *ppFont // 返回的字体接口);当获得了一个ID3DXFont接口以后,可以方便地利用ID3DXFont接口的DrawText方法来输出文字:INT ID3DXFont::DrawText(LPCSTR pString,INT Count,LPRECT pRect,DWORD Format,D3DCOLOR Color);范例代码如下:Font->DrawText("Hello World", // 待输出字符串。

directx实验三

directx实验三

浙江理工大学《DirectX游戏程序设计》实验三报告2013 ~2014 学年第2学期学院信息学院班级姓名学号任课教师(上课时间:第3周3-5节)数字媒体技术专业2014 年3 月《DirectX游戏程序设计》实验报告实验三DirectX彩色图形绘制实验二、实验代码:项目二A添加关于颜色的头文件:const D3DXCOLOR WHITE( D3DCOLOR_XRGB(255, 255, 255) );const D3DXCOLOR BLACK( D3DCOLOR_XRGB( 0, 0,0) );const D3DXCOLOR RED( D3DCOLOR_XRGB(255, 0,0) );const D3DXCOLOR GREEN( D3DCOLOR_XRGB( 0, 255,0) );const D3DXCOLOR BLUE( D3DCOLOR_XRGB( 0, 0,255) );const D3DXCOLOR YELLOW( D3DCOLOR_XRGB(255, 255,0) );const D3DXCOLOR CYAN( D3DCOLOR_XRGB( 0, 255,255) );const D3DXCOLOR MAGENTA( D3DCOLOR_XRGB(255, 0, 2)在colorvertex结构体中添加颜色参数D3DCOLOR cvertices[0] = ColorVertex(-1.0f, -1.0f,-1.0f,D3DCOLOR_XRGB(255, 0, 0));vertices[1] = ColorVertex(-1.0f, 1.0f,-1.0f,D3DCOLOR_XRGB(255, 0, 0));vertices[2] = ColorVertex( 1.0f, 1.0f,-1.0f,D3DCOLOR_XRGB(255, 0, 0));vertices[3] = ColorVertex( 1.0f, -1.0f,-1.0f,D3DCOLOR_XRGB(255, 0, 0));vertices[4] = ColorVertex(-1.0f, -1.0f,1.0f,D3DCOLOR_XRGB(255, 0, 0));vertices[5] = ColorVertex(-1.0f, 1.0f,1.0f,D3DCOLOR_XRGB(255, 0, 0));vertices[6] = ColorVertex( 1.0f, 1.0f,1.0f,D3DCOLOR_XRGB(255, 0, 0));vertices[7] = ColorVertex( 1.0f, -1.0f,1.0f,D3DCOLOR_XRGB(255, 0, 0));C要求struct Vertex //顶点数据结构的定义{Vertex(){} //顶点数据包括XYZ坐标值还有顶点颜色值Vertex(float x, float y, float z, D3DCOLOR c){_x = x; _y = y; _z = z; _color = c;}float _x, _y, _z;D3DCOLOR _color;static const DWORD FVF;};Device->CreateVertexBuffer( //建立顶点缓冲区8 * sizeof(Vertex),D3DUSAGE_WRITEONLY,Vertex::FVF,D3DPOOL_MANAGED,&VB,0);Device->CreateIndexBuffer( //建立索引缓冲区36 * sizeof(WORD),D3DUSAGE_WRITEONLY,D3DFMT_INDEX16,D3DPOOL_MANAGED,&IB,0);Device->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD);//将渲染模式改为差值模式四、实验结果测试、收获与体会:结果截图项目一1项目二收货与感受源代码修改太多次,把主要的几个放在代码区,实验结果放在效果图上。

Directx3D编写2d画面程序

Directx3D编写2d画面程序
device->SetTransform( D3DTS_VIEW,&identity );
if( trans )
{
sprite->Begin( D3DXSPRITE_ALPHABLEND );
}
else
{
sprite->Begin( 0 );
}
//把纹理中的子区域画在指定的屏幕 Nhomakorabea标上 方法四:
就是在3D空间中与相机方向垂直的指定平面上画图,因些就要有两个函数一个是获取相机的原点到屏幕上一点的射线,另一个就是射线与平面的交点,
有了这个交点就可以在3D空间中画四边型了,从而显示出2D图像,
而关键是第一个函数,射线与平面的交点可用数学知识直接求出
下面的函数为计算出鼠标点击窗口的客户区后所产生的相机原点与该点相连的射线
c0.a = alpha;
c1.a = alpha;
c2.a = alpha;
c3.a = alpha;
}
v[0] = VERTEX_T( x,-y,0,c0 );
v[1] = VERTEX_T( x + w,-y,0,c1 );
v[2] = VERTEX_T( x,-( y + h ),0,c2 );
}
D3DXVECTOR3 v;
D3DCOLOR c;
static const DWORD FVF;
};
const DWORD VERTEX_T::FVF = D3DFVF_XYZ | D3DFVF_DIFFUSE;
void DrawRect_2D(
int x,
int y,
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二DirectX渲染及图形绘制实验
项目1:DirectX渲染管道实验
在例程Cub的基础上,完成以下步骤:
1.修改Display函数中物体的旋转变换矩阵,使三维模型不再旋转。

2.修改摄像机位置坐标、观察点坐标、向上向量的值,记录以下状态时的值:
a)远距离拍摄。

b)近距离拍摄。

c)平面旋转90度。

3.修改变换矩阵的创建参数,即D3DXMatrixPerspectiveFovLH()函数的参数,观察并记录以下参数对应的画面:
a)近平面距离设为1000,远平面距离设为1000。

b)近平面距离设为1,远平面距离设为5。

c)近平面距离设为1,远平面距离设为1000。

d)宽高比:(float)width*1.5/(float)height
e)宽高比:(float)width*0.5/(float)height
f)宽高比:(float)width/(float)height
项目2:DirectX图形绘制实验
在例程Cub的基础上,完成以下步骤:
1.修改8个顶点中任一个一个顶点的值,观察并记录画面。

2.增加一个顶点数据(第9个顶点),具体值为:(2.0f,1.0f,1.0f)。

观察并记录画面。

此处需要注意顶点缓冲区创建的缓冲区大小参数为9个顶点(Vertex)。

3.增加一个三角形数据,即三个索引缓冲区,具体值为:6,7,8。

观察并记录画面。

此处需要注意索引缓冲区创建的缓冲区大小参数为39个索引(WORD)。

4.再增加两个三角形数据,具体值为自行设定,观察并记录画面。

此处需要注意索引缓冲区创建的缓冲区大小参数为39+6个索引(WORD)。

5.改变渲染状态,分别设置渲染的FILLMODE为线框模式、顶点模式和面模式,观察并记录画面。

项目一:
1
A
B
C
A
B
C
D
E
F
1:
2:
3:
4:
5:
A:
线框模式:
点模式:
C面模式。

相关文档
最新文档