DirectX 3D学习笔记(一)

Ⅰ、渲染状态

设备的渲染状态控制Direct3D设备的光栅化组件的行为。通过改变光栅渲染状态属性,可以设置使用何种方式来进行渲染着色,以及如何进行雾化等。

在Direct3D中我们可以通过IDirect3DDevice9::SetRenderState()函数来设置渲染状态。

HRESULT SetRenderState(

D3DRENDERSTATETYPE State,

DWORD Value

);

通过枚举函数SetRenderState中的第一个参数D3DRENDERSTATETYPE,可以得到

所有可能的渲染状态。

①    着色模式

Direct3D中的物体表面是有很多多边形组成的,如三角形。当渲染一个物体的多边形

的时候,不同的着色模式在其表面是会产生不同的效果的。每一种着色模式决定了平面上的每个点的颜色和光照强度。通过SetRenderState函数的参数D3DRENDERSTATETYPE枚举到的着色模式为D3DSHADEMODE,定义如下

Defines constants that describe the supported shading modes.

typedef enum D3DSHADEMODE

{
    D3DSHADE_FLAT = 1,
    D3DSHADE_GOURAUD = 2,
    D3DSHADE_PHONG = 3,
    D3DSHADE_FORCE_DWORD = 0x7fffffff,
} D3DSHADEMODE, *LPD3DSHADEMODE;
 
在上面得到的定义中,Direct3D主要给我们提供了两种着色模式,平面着色和Gouraud着色。后面的两种不需要考虑。
 
A、 平面着色
在平面着色模式下,Direct3D渲染一个多边形的时候,把多边形的第一个顶点的颜色
作为整个多边形的颜色进行着色。在这种情况下,一个多边形的所有像素的颜色值都等于该多边形的第一个顶点的颜色值。而且如果这些多边形是不共面的,在flat着色模式下渲染的三维图形将出现明显的。
 
B、 戈劳德着色
在戈劳德着色模式下,Direct3D渲染一个多边形的时候,它会先用顶点法向量和灯光
参数计算每个顶点的颜色,然后在改多边形的表面上进行线性插值,来得到每个像素的颜色值。
 
eg:gD3Device->SetRenderState(D3DRS_SHADEMODE,D3DSHADE_GOURAUD);//Gouraud
eg:gD3Device->SetRenderState(D3DRS_SHADEMODE,D3DSHADE_FLAT);    //Flat
 
②    多边形填充模式
在默认的状态下,Direct3D会把渲染好的多边形完全显示。但可能有时候不需要将全
部显示,比如只要显示所有的顶点,或者是所有的边。同样可以通过枚举函数SetRenderState中的第一个参数D3DRENDERSTATETYPE,得到Direct3D的填充模式。
    typedef enum D3DFILLMODE
{
    D3DFILL_POINT = 1,
    D3DFILL_WIREFRAME = 2,
    D3DFILL_SOLID = 3,
    D3DFILL_FORCE_DWORD = 0x7fffffff,
} D3DFILLMODE, *LPD3DFILLMODE;
 
    D3DFILL_POINT:点模式,绘制多边形的每一个顶点
    D3DFILL_WIREFRAME:线模式,在多边形的每个边绘制一条线
D3DFILL_SOLID:面模式,也是默认模式,对多边形的面进行绘制填充
// 线模式
eg:gD3Device->SetRenderState(D3DRS_FILLMODE, D3DFILL_POINT);

转载于:https://www.cnblogs.com/leezhm/archive/2008/07/21/2560354.html

DirectX 3D学习笔记(一)相关推荐

  1. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引...

    Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引 原文:Introduction to 3 ...

  2. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十九章:法线贴图

    Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十九章:法线贴图 原文:Introduction to 3D Game P ...

  3. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十三章:计算着色器(The Compute Shader)...

    Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十三章:计算着色器(The Compute Shader) 原文: Int ...

  4. Direct 3D学习笔记(三)——光照与材质

    Direct 3D学习笔记(三)--光照与材质 现实世界中物体的颜色是一个复杂的系统,物体在不同的光照下,可能呈现在我们面前的就是不同的颜色.根据物理中的光学知识,物体在各种环境光照下,根据物体自身特 ...

  5. Windows 8 Directx 开发学习笔记(十一)地形纹理贴图

    前一篇实现木箱贴图时,木箱的六个面都正好用一整张纹理图,即六个面的纹理坐标均在[0,1]内.然而在为比较大的模型贴图时,像山峰河谷模型,如果只用一张纹理图,那么每个三角形只得到几个纹理元素,无法为提供 ...

  6. AutoCAD/Civil 3D 学习笔记

    Civil学习笔记 1.环境配置 1.添加引用: Civil二次开发需要5个基本的AutoCAD的dll引用-acdbmgd.dll, acmgd.dll, accoremgd.dll, AecBas ...

  7. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第四章:Direct 3D初始化

    学习目标 对Direct 3D编程在3D硬件中扮演的角色有基本了解: 理解COM在Direct 3D中扮演的角色: 学习基本的图形学概念,比如存储2D图像.页面切换,深度缓冲.多重纹理映射和CPU与G ...

  8. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十一章:环境光遮蔽(AMBIENT OCCLUSION)

    学习目标 熟悉环境光遮蔽的基本思路,以及通过光线跟踪的实现方法: 学习如何在屏幕坐标系下实现实时模拟的环境光遮蔽. 1 通过光线追踪实现的环境光遮蔽 其中一种估算点P遮蔽的方法是光线跟踪.我们随机跟踪 ...

  9. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引

    代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 学习目标 回顾视景坐标系变换的数学算法: 熟悉第一人称摄像机的功能: 实现第 ...

最新文章

  1. Google、微软、阿里、腾讯、百度这些大公司在GitHub上开源投入排名分析 | CSDN原力计划...
  2. 2016 Multi-University Training Contest 1 GCD【RMQ+二分】
  3. 开源大数据周刊-第15期
  4. python每日一学_Python每日一练0011
  5. 波士顿大学计算机与传媒专业,波士顿大学传媒专业好吗
  6. php5 mysql 源_CentOS 7.4使用yum源安装MySQL5.7
  7. preg_match_all中的标记
  8. iOS学习笔记-地图MapKit入门
  9. 表级触发器不支持ddl语句_用于视图,过程和函数的数据库级DDL触发器
  10. AppScan漏洞“已解密的登陆请求”修复解决方案
  11. C# 类似PS的魔棒工具(2)羽化
  12. 读书笔记 | 财务会计理论(第7版 William R.Scott)(上)
  13. SOFA Weekly | QA 整理
  14. 小葵花妈妈课堂开课了:《Runnable、Callable、Future、RunnableFuture、FutureTask 源码分析》...
  15. 【Python网络编程】爬取百度贴吧、小说内容、豆瓣小说、Ajax爬微博、多线程爬淘宝
  16. 图像处理----形态学滤波
  17. 三维重建 几何方法 深度学习_三维重建算法综述|传统+深度学习方式
  18. php filter 文件包含,文件包含lfi
  19. 西南大学计算机考研808真题分享
  20. N打头的股票是什么意思?

热门文章

  1. flex 文字竖排_flex button字竖排展示
  2. android attrs获取_Android 常用侧滑栏实现
  3. python 购物车分析_python 简易购物车程序解析
  4. python from import 路径_python from...import *
  5. ICCV 2017 CREST:《CREST: Convolutional Residual Learning for Visual Tracking》论文笔记
  6. python系统监控_python psutil系统监控详解
  7. 2014年12月福建省高等学校计算机应用水平等级考试考试大纲,福建省高等学校计算机应用水平等级考试...
  8. python pandas 读取excel 去重某一列_Python中Pandas读取修改excel操作攻略(代码示例)...
  9. 2、Linux基础练习题
  10. 在Servlet使用getServletContext()获取ServletContext对象出现java.lang.NullPointerException(空指针)异常的解决办法...