欢迎来到第壹文秘! | 帮助中心 分享价值,成长自我!
第壹文秘
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 第壹文秘 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    第二章绘制三角形.docx

    • 资源ID:463243       资源大小:98.67KB        全文页数:8页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第二章绘制三角形.docx

    第二章:绘制三角形Introduction(Jf)所有的3D图形都是由三角形构成的。为什么是三角形而不是别的图形呢?因为三角形有许多优越之处,例如:绘制效率。(译者:而且我们知道,任意不在同一条直线上的三个点都能构成三角形,这对于在空间中形成某种复杂图形是很有益处的,我的理解.)所以,如果我们想得到个矩形,最有效率的是绘制两个相同的合并的三角形,这样要优于直接绘制一个矩形。所以,本教程下面将告诉你如何绘制复杂物体的最小单元:三角形。(译者:神奇的三角形啊.)Vertices(顶点)顶点(VerteX)是什么?顶点就是3D空间中的一个点。例如,三角形有三个顶点,而矩形有四个。在3D空间中,你可以用三个顶点来指定一个三角形。想做到这些,你需要了解迪卡尔坐标系统。2DCartesiancoordinatesystem(2D迪卡尔坐标系统)下面的两幅图演示了2D迪卡尔坐标系统是怎样工作的。2DCartesianCoordinatesFig2.12D迪卡尔坐标系统是很简单的,用两条轴x、y的值来表示点的位置,进而表现出图形的位置。这是初中时我们就学习过的。3DCartesiancoordinatesystem(3D迪卡尔坐标系统)下面的两幅图演示了左手3D迪卡尔坐标系统是怎样工作的。两个轴显然不够用了,所以,有了第三个轴:z2D坐标系统只有X轴与y轴,因为它是平面的。而在3D空间里,轴。现在,我们用这三个轴就能在3D空间中表示出物体的任意位置了。这其实是很简单的事情,我就不多说了。3DPrimitivesPrimitiVe为“原始”之意,3Dprimitive就是设备所支持的原始的类型。它包括:点列、线列、线代、三角形列、三角形带和三角扇形。使用3Dprimitive完成上述的图形是很方便的。以后我们会用3Dprimitive来绘制图形。下面的一些例子演示了上述的各种方式:PointLists(点列)(3k5,0)(7,5,0)(11,5,0)(1.1.0)(5,1,0)(9,1,0)Fig2.51.ineLists1.ineStripsTriangleListsFig2.8TriangleStrips(三角形带)TriangleFans(三角扇形)FlexibleVertexFormat(FVF)(灵活顶点格式)FIeXibIe的意思是“灵活的”。这里不译为“灵活的顶点格式”而译为“灵活顶点格式”是有原因的:前者是一个短语,像是广告词一样;后者才更像是一种名词或术语。所以,我取了后者。灵活顶点格式(FVF)是用来描述顶点属性的一种格式,而这种格式是可以由我们自定义的,所以称它为“灵活顶点格式”。至此,我们至少知道了顶点有三种属性:X值、y值和Z值。其实顶点还可以有其他属性,例如颜色与亮度。利用灵活顶点格式(FVF)我们能方便的指定顶点的属性。如果我们在DireCt3D指定了一个多边形,这个多边形将可以被它的各个顶点的属性所填充,带有过渡性的属性填充。我知道这个不太好理解,没关系,下面我们有例子,它也正是这样做的:在我们下面的例子中,将会有一个三个顶点所组成的三角形,三角形的每个顶点的颜色都是不同的,他们分别是红、绿、蓝,电脑中的三原色。三角形将会被这三种颜色混合的、渐变的填充起来。VertexBuffers(顶点缓冲)顶点缓冲就是一块用于保存顶点的内存缓冲区。顶点缓冲可以保存任何的顶点类型。当你的一些顶点已经被保存在顶点缓冲区中,你就可以操作它们了,例如渲染、变换和剪裁。Colours(颜色)在DireCtX中,如果我们要指定一种颜色,我们可以用D3DCOLOR_XRGB宏。宏中有三个参数,每个参数都是0到255间的整数值,分别用于描述颜色的红、绿、蓝分量,然后D3DCOLOR_XRGB宏会将它们调和,就像水彩调色一样。例如:D3DCOLOR-×RGB(Oz0,0)是黑色(无色)。D3DCOLOR_XRGB(255Z255z255)是纯白色(满色调)。D3DCOLOR_XRGB(Oz255z0)是亮绿色(没有红与蓝,全是绿色的分量)。D3DCOLOR-×RGB(100z20,100)是暗紫色(100红,20绿,IoO蓝)。好了,我们第二章的例子就在这了。它和第一个例子差不多,只是添加了一些代码、做了些修改。仔细研究吧!It'seasy!include<d3d8.h>1.PDIRECT3D8g_pD3D=NULL;1.PDIRECT3DDEVICE8g_pD3DDevice=NULL;1.PDIRECT3DVERTEXBUFFER8g_pVertexBuffer=NULL;/BuffertoholdverticesstructCUSTOMVERTEX(FLOATx,y,z,rhw;/Thetransformedpositionforthevertex.DWORDcolour;/Thevertexcolour.);#defineD3DFVFCUSTOMVERTEX(D3DFVFXYZRHWD3DFVFDIFFUSE)#defineSafeRelease(pbject)if(pbject!=NULL)pObject->Release();pObject=NULL;HRESULTInitialiseD3D(HWNDhWnd)(/Firstofall,createthemainD3Dobject.Ifitiscreatedsuccessfullywe/shouldgetapointertoanIDirect3D8interface.gpD3D=Direct3DCreate8(D3DSDKVERSION);if(gpD3D=NULL)(returnE_FAIL;)/GetthecurrentdisplaymodeD3DDISPLAYM0DEd3ddm;if(FAILED(g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT,&d3ddm)(returnE_FAIL;)/CreateastructuretoholdthesettingsforourdeviceD3DPRESENT_PARAMETERSd3dpp;ZeroMemory(d3dppzsizeof(d3dpp);/Fillthestructure./Wewantourprogramtobewindowed,andsetthebackbuffertoaformat/thatmatchesourcurrentdisplaymodewed=TRUE;ffect=D3DSWAPEFFECT_C0PY_VSYNC;UfferFormat=t;/CreateaDirect3Ddevice.if(FAILED(gpD3D->CreateDevice(D3DADAPTERDEFAULT,D3DDEVTYPEHAL,hWnd,D3DCREATESOFTWAREVERTEXPROCESSING,&d3dpp,&g_pD3DDevice)(returnE_FAIL;)returnS_OK;HRESULTInitialiseVertexBuffer()(VOID*pVertices;/Storeeachpointofthetriangletogetherwithit,scolourCUSTOMVERTEXcvVertices=/Vertex1-Red(250,100)250.0fz100.Of,0.5f,1.0f,D3DCOLOR_XRGB(255z0,0),/Vertex2-Green(400z350)400.0fz350.Of,0.5fz1.0fzD3DCOLOR_XRGB(0z255,0),/Vertex3-Blue(100,350)100.0f,350.Of,0.5f,1.0f,D3DCOLOR_XRGB(0,0,255),r/Createthevertexbufferfromourdeviceif(FAILED(gpD3DDevice->CreateVertexBuffer(3*sizeof(CUSTOMVERTEX)z0zD3DFVFCUSTOMVERTEX,D3DPOOLDEFAULT,&g_pVertexBuffer)(returnE_FAIL;/Getapointertothevertexbufferverticesandlockthevertexbufferif(FAILED(gpVertexBuffer->Lock(0zsizeof(CvVertices),(BYTE*)&pVertices,0)(returnE_FAIL;)/Copyourstoredverticesvaluesintothevertexbuffermemcpy(pVertices,cvVertices,sizeof(CvVertices);/UnlockthevertexbuffergpVertexBuffer->Unlock();returnS_OK;voidRender()(if(g_pD3DDevice=NULL)(return;)/Clearthebackbuffertoblackg_pD3DDevice->Clear(0,NULL,D3DCLEARJARGET,D3DCOLOR_XRGB(0,0,0),1.0f,0);/BeginthescenegpD3DDevice->BeginScene();/Renderingourtriangleg_pD3DDevice->SetStreamSource(0,g_pVertexBuffer,sizeof(CUSTOMVERTEX);g2pD3DDevice->SetVertexShader(D3DFVF_CUSTOMVERTEX);g2pD3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST,0,1);/Endthesceneg_pD3DDevice->EndScene();/Filpthebackandfrontbufferssothatwhateverhasbeenrenderedonthe/backbufferwillnowbevisibleonscreen(frontbuffer)g_pD3DDevice->Present(NULL,NULL,NULL,NULL);voidCleanUp()SafeRelease(g_pD3DDevice);SafeRelease(g_pD3D);voidGameLoop()(/EnterthegameloopMSGmsg;BOOLfMessage;PeekMessage(&msg,NULL,OU,OU,PM_NOREMOVE);while(ge!=WMQUIT)(fMessage=PeekMessage(&msg,NULL,OUzOU,PM_REMOVE);if(fMessage)(/ProcessmessageTranslateMessage(&msg);DispatchMessage(&msg);)else(/Nomessagetoprocess,sorenderthecurrentsceneRe

    注意事项

    本文(第二章绘制三角形.docx)为本站会员(p**)主动上传,第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第壹文秘(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 1wenmi网站版权所有

    经营许可证编号:宁ICP备2022001189号-1

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!

    收起
    展开