1. 首先知道渲染代码放置位置。渲染代码放在WinMain消息循环中

while(msg.message!=WM_QUIT)

{

if(PeekMessage(****)

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

else

RenderScene();

}

}

RenderScene函数中是绘制场景。

//在WinMain函数中,调用渲染场景前,要先创建D3D设备,步骤如下:

1. 创建D3D object对象

LPDIRECT3D g_D3D = Direct3DCreate9(D3D_SDK_VERSION);

2. 获取桌面窗口显示模式

D3DISPLAYMODE displayMode;

g_D3D->GetAdpterDisplayMode(D3DADPTER_DEFAULT,&displayMode)));

//创建用于设置d3d设备的数据结构

D3DPRENT_PARAMETERS d3dpp;

d3dpp.Windowed = FALSE; //是窗口还是全屏

d3dpp.BackBufferWidth = 600;

d3dpp.BackBufferHeight = 800; // 后备缓冲区宽度和高度

//还有其他一些函数,采样类型,设置是否使用深度缓冲等。 ???深度缓冲

3. 创建设备

g_D3D->CreateDevice(****);

//创建完成设备后,设置渲染模式

g_D3D->SetRenderState(*,*);

SetRenderState如下:

HRESULT SetRenderState(
[in]  D3DRENDERSTATETYPE State,
[in]  DWORD Value
); 其中第一个参数如下:
typedef enum D3DRENDERSTATETYPE {
D3DRS_ZENABLE                     = 7,// z缓存
D3DRS_FILLMODE                    = 8,
D3DRS_SHADEMODE                   = 9,
D3DRS_ZWRITEENABLE                = 14,
D3DRS_ALPHATESTENABLE             = 15,
D3DRS_LASTPIXEL                   = 16,
D3DRS_SRCBLEND                    = 19,
D3DRS_DESTBLEND                   = 20,
D3DRS_CULLMODE                    = 22,
D3DRS_ZFUNC                       = 23,
D3DRS_ALPHAREF                    = 24,
D3DRS_ALPHAFUNC                   = 25,
D3DRS_DITHERENABLE                = 26,
D3DRS_ALPHABLENDENABLE            = 27,
D3DRS_FOGENABLE                   = 28,
D3DRS_SPECULARENABLE              = 29,
D3DRS_FOGCOLOR                    = 34,
D3DRS_FOGTABLEMODE                = 35,
D3DRS_FOGSTART                    = 36,
D3DRS_FOGEND                      = 37,
D3DRS_FOGDENSITY                  = 38,
D3DRS_RANGEFOGENABLE              = 48,
D3DRS_STENCILENABLE               = 52,
D3DRS_STENCILFAIL                 = 53,
D3DRS_STENCILZFAIL                = 54,
D3DRS_STENCILPASS                 = 55,
D3DRS_STENCILFUNC                 = 56,
D3DRS_STENCILREF                  = 57,
D3DRS_STENCILMASK                 = 58,
D3DRS_STENCILWRITEMASK            = 59,
D3DRS_TEXTUREFACTOR               = 60,
D3DRS_WRAP0                       = 128,
D3DRS_WRAP1                       = 129,
D3DRS_WRAP2                       = 130,
D3DRS_WRAP3                       = 131,
D3DRS_WRAP4                       = 132,
D3DRS_WRAP5                       = 133,
D3DRS_WRAP6                       = 134,
D3DRS_WRAP7                       = 135,
D3DRS_CLIPPING                    = 136,
D3DRS_LIGHTING                    = 137,
D3DRS_AMBIENT                     = 139,
D3DRS_FOGVERTEXMODE               = 140,
D3DRS_COLORVERTEX                 = 141,
D3DRS_LOCALVIEWER                 = 142,
D3DRS_NORMALIZENORMALS            = 143,
D3DRS_DIFFUSEMATERIALSOURCE       = 145,
D3DRS_SPECULARMATERIALSOURCE      = 146,
D3DRS_AMBIENTMATERIALSOURCE       = 147,
D3DRS_EMISSIVEMATERIALSOURCE      = 148,
D3DRS_VERTEXBLEND                 = 151,
D3DRS_CLIPPLANEENABLE             = 152,
D3DRS_POINTSIZE                   = 154,
D3DRS_POINTSIZE_MIN               = 155,
D3DRS_POINTSPRITEENABLE           = 156,
D3DRS_POINTSCALEENABLE            = 157,
D3DRS_POINTSCALE_A                = 158,
D3DRS_POINTSCALE_B                = 159,
D3DRS_POINTSCALE_C                = 160,
D3DRS_MULTISAMPLEANTIALIAS        = 161,
D3DRS_MULTISAMPLEMASK             = 162,
D3DRS_PATCHEDGESTYLE              = 163,
D3DRS_DEBUGMONITORTOKEN           = 165,
D3DRS_POINTSIZE_MAX               = 166,
D3DRS_INDEXEDVERTEXBLENDENABLE    = 167,
D3DRS_COLORWRITEENABLE            = 168,
D3DRS_TWEENFACTOR                 = 170,
D3DRS_BLENDOP                     = 171,
D3DRS_POSITIONDEGREE              = 172,
D3DRS_NORMALDEGREE                = 173,
D3DRS_SCISSORTESTENABLE           = 174,
D3DRS_SLOPESCALEDEPTHBIAS         = 175,
D3DRS_ANTIALIASEDLINEENABLE       = 176,
D3DRS_MINTESSELLATIONLEVEL        = 178,
D3DRS_MAXTESSELLATIONLEVEL        = 179,
D3DRS_ADAPTIVETESS_X              = 180,
D3DRS_ADAPTIVETESS_Y              = 181,
D3DRS_ADAPTIVETESS_Z              = 182,
D3DRS_ADAPTIVETESS_W              = 183,
D3DRS_ENABLEADAPTIVETESSELLATION  = 184,
D3DRS_TWOSIDEDSTENCILMODE         = 185,
D3DRS_CCW_STENCILFAIL             = 186,
D3DRS_CCW_STENCILZFAIL            = 187,
D3DRS_CCW_STENCILPASS             = 188,
D3DRS_CCW_STENCILFUNC             = 189,
D3DRS_COLORWRITEENABLE1           = 190,
D3DRS_COLORWRITEENABLE2           = 191,
D3DRS_COLORWRITEENABLE3           = 192,
D3DRS_BLENDFACTOR                 = 193,
D3DRS_SRGBWRITEENABLE             = 194,
D3DRS_DEPTHBIAS                   = 195,
D3DRS_WRAP8                       = 198,
D3DRS_WRAP9                       = 199,
D3DRS_WRAP10                      = 200,
D3DRS_WRAP11                      = 201,
D3DRS_WRAP12                      = 202,
D3DRS_WRAP13                      = 203,
D3DRS_WRAP14                      = 204,
D3DRS_WRAP15                      = 205,
D3DRS_SEPARATEALPHABLENDENABLE    = 206,
D3DRS_SRCBLENDALPHA               = 207,
D3DRS_DESTBLENDALPHA              = 208,
D3DRS_BLENDOPALPHA                = 209,
D3DRS_FORCE_DWORD                 = 0x7fffffff
} D3DRENDERSTATETYPE, *LPD3DRENDERSTATETYPE;

参数太多,自己看了下directx api文档,http://www.google.com.hk/#newwindow=1&q=directx+api&safe=strict,主要设置渲染状态,但对这些状态了解太少了,对有些状态设置后,场景中要显示的物体没有显示。

设置完成渲染状态后,设置要渲染的对象。

//设置透视投影矩阵,设置观察矩阵,世界矩阵

g_D3DDevice->SetTransform(D3DTS_PROJECTION, &g_projection);

g_D3DDevice->SetTransform(D3DTS_VIEW, &g_pview);

g_D3DDevice->SetTransform(D3DTS_WORLD, (D3DMATRIX*)g_bones[i].absolute.matrix);调试代码,无法将这些矩阵和在窗口显示的关联在一起,不明白。

//设置要渲染的数据

g_D3DDevice->DrawPrimitiveUP(D3DPT_LINELIST, 4,
baseLines, sizeof(Vertex));

//将数据显示窗口中

g_D3Device->EndScene();

g_D3Device->Present(NULL,NULL,NULL,NULL);

这样在窗口中可以看到渲染的物体对象。

使用DirectX作渲染过程的更多相关文章

  1. 一步步实现windows版ijkplayer系列文章之六——SDL2源码分析之OpenGL ES在windows上的渲染过程

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  2. 《Webkit技术内幕》之页面渲染过程

    文章同步到github<Webkit技术内幕>之页面渲染过程 最近拜读了传说中的<Webkit技术内幕>一书,有很大收获,尤其是对页面渲染有了较深的认识.由于功力有限,而且书中 ...

  3. spring mvc DispatcherServlet详解之四---视图渲染过程

    整个spring mvc的架构如下图所示: 现在来讲解DispatcherServletDispatcherServlet的最后一步:视图渲染.视图渲染的过程是在获取到ModelAndView后的过程 ...

  4. iOS 事件处理机制与图像渲染过程(转)

    iOS 事件处理机制与图像渲染过程 iOS RunLoop都干了什么 iOS 为什么必须在主线程中操作UI 事件响应 CALayer CADisplayLink 和 NSTimer iOS 渲染过程 ...

  5. iOS 事件处理机制与图像渲染过程

    Peter在开发公众号功能时触发了一个bug,导致群发错误.对此我们深表歉意,并果断开除了Peter.以下交回给正文时间: iOS 事件处理机制与图像渲染过程 iOS RunLoop都干了什么 iOS ...

  6. SpringMVC DispatcherServlet-------视图渲染过程

    整个spring mvc的架构如下图所示: 现在来讲解DispatcherServletDispatcherServlet的最后一步:视图渲染.视图渲染的过程是在获取到ModelAndView后的过程 ...

  7. WebKit 渲染过程

    webkit笔记,主要来自 朱永盛 <WebKit技术内幕> 学习笔记,转载就注明原著,该书是国内仅有的Webkit内核的书籍,学习的好导师,推荐有兴趣的朋友可以购买 Webkit渲染过程 ...

  8. 二、Vue 页面渲染过程

    前言 上篇博文我们依葫芦画瓢已经将hello world 展现在界面上啦,但是是不是感觉新虚虚的,总觉得这么多文件,项目怎么就启动起来了呢?怎么访问到8080 端口就能进入到我们的首页呢.整个的流程是 ...

  9. Vue是如何渲染页面的,渲染过程以及原理代码

    Vue是如何渲染页面的,渲染过程以及原理代码:https://www.cnblogs.com/ypinchina/p/7238402.html

随机推荐

  1. [CI]CodeIgniter系统流程

    ---------------------------------------------------------------------------------------------------- ...

  2. 【原创】思科和锐捷组建多VLAN交换网络(隧道模式Trunk)

    组建简单交换网络设计与实施 [利用思科仿真与锐捷实践] 本文目录 第一部分 预备知识 第二部分 设计与仿真 需求分析 整体设计 PT仿真 第三部分 施工部署 console配置 连通测试 第一部分 预 ...

  3. 18.异常.md

    目录 1.try...catch 2.异常了的继承机制 2.1基本概念 2.2常用异常 2.3多异常捕获 2.4获取异常信息 2.5finally回收资源 2.6Checked异常和Runtime异常 ...

  4. 12.常用类简单介绍.md

    目录 1.Scanner类 2.System类 4.Object类和工具类 5.StringBuffer类和StringBuilder类 6.Math类 7.Random类和ThreadLocalRa ...

  5. java Overloaded的方法是否可以改变返回值的类型?

    刚才看到这样一个题,下面的解释很乱,所以还是做一下试验比较好 public class Test { public static void main(String[] args){ Bae b = n ...

  6. 在windows上通过ssh远程链接linux服务器[转]

    本文分别转自 [http://jingyan.baidu.com/article/6d704a130de40e28db51cab5.html] [http://www.cnblogs.com/mliu ...

  7. RPN(region proposal network)之理解

    在faster-r-cnn 中,因为引入rpn层,使得算法速度变快了不少,其实rpn主要作用预测的是 “相对的平移,缩放尺度”,rpn提取出的proposals通常要和anchor box进行拟合回归 ...

  8. JAVA 实验报告

        石家庄铁道大学信息科学与技术学院       实验报告 2018年----2019年  第一学期               题目:   四则运算.生成验证码 课程名称:  JAVA语言程序设 ...

  9. 百度地图报错:APP Referer校验失败

    今天微信小程序,通过经纬度,调用百度api,将经纬度转换成城市名和街道地址,结果小程序报错. 错误信息如下: 这个是KEY的白名单设置问题.因为白名单设置限制了来源信息.只要在下面红色部分设置IP,或 ...

  10. 兴趣点 / 关键点( Interest point/Keypoint )

    • 不同视角图片之间的映射           • 稳定局部特征点           • 可重复性.显著性           • 抗图片变换           • 外貌变换(亮度.光照)    ...