Shading

原创 2006年05月28日 23:24:00

There are two shading modes that are presently used: flat shading and Gouraud shading.

Like many things in Direct3D, the shading mode is controlled through the Direct3D state machine.

// set flat shading
Device->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT);

// set Gouraud shading
Device->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD);
bool Setup()
{
     // create vertex buffer
     Device->CreateVertexBuffer(
          3 * sizeof(ColorVertex),
          D3DUSAGE WRITEONLY,
          ColorVertex::FVF,
          D3DPOOL MANAGED,
          &Triangle,
          0);

     // fill the buffers with the triangle data
     ColorVertex* v;
     Triangle->Lock(0, 0, (void**)&v, 0);

     v[0] = ColorVertex(-1.0f, 0.0f, 2.0f, D3DCOLOR XRGB(255,   0,
                                                         0));
     v[1] = ColorVertex( 0.0f, 1.0f, 2.0f, D3DCOLOR XRGB(  0, 255,
                                                         0));
     v[2] = ColorVertex( 1.0f, 0.0f, 2.0f, D3DCOLOR XRGB(  0,   0,
                                                         255));

     Triangle->Unlock();

     // set projection matrix
     D3DXMATRIX proj;
     D3DXMatrixPerspectiveFovLH(
          &proj,
          D3DX PI * 0.5f, // 90 - degree
          (float)Width / (float)Height,
          1.0f,
          1000.0f);
     Device->SetTransform(D3DTS PROJECTION, &proj);

     // set the render states
     Device->SetRenderState(D3DRS LIGHTING, false);

     return true;
}

Then, the Display function draws Triangle twice in two different positions and with different shade modes. The position of each triangle is controlled with the world matrix—World.

bool Display(float timeDelta)
{
     if( Device )
     {
         Device->Clear(0, 0, D3DCLEAR TARGET | D3DCLEAR ZBUFFER,
                       0xffffffff, 1.0f, 0);
         Device->BeginScene();

         Device->SetFVF(ColorVertex::FVF);
         Device->SetStreamSource(0, Triangle, 0, sizeof(ColorVertex));
         // draw the triangle to the left with flat shading
         D3DXMatrixTranslation(&World, -1.25f, 0.0f, 0.0f);
         Device->SetTransform(D3DTS WORLD, &World);

         Device->SetRenderState(D3DRS SHADEMODE, D3DSHADE FLAT);
         Device->DrawPrimitive(D3DPT TRIANGLELIST, 0, 1);

         // draw the triangle to the right with gouraud shading
         D3DXMatrixTranslation(&World, 1.25f, 0.0f, 0.0f);
         Device->SetTransform(D3DTS WORLD, &World);

         Device->SetRenderState(D3DRS SHADEMODE, D3DSHADE GOURAUD);
         Device->DrawPrimitive(D3DPT TRIANGLELIST, 0, 1);

         Device->EndScene();
         Device->Present(0, 0, 0, 0);
     }
     return true;
}
flat 和 GOURAUD 两种方式到是好理解,主要是我想看看,他程序的结构,是在setup把vertex的模型写好
,然后在display(){Device->BeginScene();}里面渲染。

matlab函数——shading函数

函数说明: 是阴影函数控制曲面和图形对象的颜色着色,即用来处理色彩效果的,包括以下三种形式: shading faceted:默认模式,在曲面或图形对象上叠加黑色的网格线; shadin...
  • qq_27561265
  • qq_27561265
  • 2015年09月07日 16:32
  • 4024

OpenGL进阶(十二) - 基础着色(Shading)

提要 经过前面的关于GLSL基础学习,包括: OpenGL进阶(八) - GLSL入门 Real-Rime Rendering (2) - 变换和矩阵(Translation and Matrics...
  • qp120291570
  • qp120291570
  • 2013年08月17日 11:25
  • 4560

camera sensor lens shading原因

由于通光孔限制,凸透镜原理,中心必然比周边多
  • u013531497
  • u013531497
  • 2014年09月05日 16:29
  • 5203

Q80:平坦着色(Flat Shading)和平滑着色(Smooth Shading)——“Q79:怎么用三角形网格(Triangle Mesh)细分曲面”(补充)

80.1 概述   前面用三角形网格细分球面时,对单个三角形的着色方式采样的是“Flat Shading”。即: 通过三角形三顶点的坐标计算出整个三角形的法向量。 这样就导致相邻两个三角形的法向量...
  • libing_zeng
  • libing_zeng
  • 2017年03月07日 12:34
  • 708

【转】鏡頭校正(Lens Shading Correction)

本文来自:我爱研发网(52RD.com) - R&D大本营 详细出处:http://www.52rd.com/bbs/Dispbbs.asp?BoardID=86&ID=115525     ...
  • sppt168
  • sppt168
  • 2016年01月06日 10:58
  • 1301

opencv实现camera模组的暗电流和lenshading补偿

简介   在接触过的qcom和mtk平台中,camera调试软件和流程基本都是大同小异。所以查了点资料,然后模仿这些软件,自己练习写了下最开始的 两步:暗电流和len shading补偿。 基本原...
  • u011630458
  • u011630458
  • 2015年05月12日 15:55
  • 1659

Shading 编程

回忆OpenGL的渲染管线,里面的顶点处理管线,和片原管线都是可以通过编程实现的。现在一般的显卡都是支持GPU编程的。GPU与CPU的区别:GPU是并行的,多管线的,所以速度一般都很快,而且GPU是矢...
  • dizuo
  • dizuo
  • 2008年06月02日 22:31
  • 1764

OpenGL Shading language学习总结

这篇文章是根据中对应章节的总结,看了好几本OpenGL ES的入门图书,只有这本让我在入门的时候不那么迷茫,强烈推荐! 着色语言概述: OpenGL ES 着色语言是一种高级的图形编程语言,其源...
  • lihei12345
  • lihei12345
  • 2015年01月09日 10:48
  • 1297

关于matlab中pcolor显示图片时的shading设置问题

在用pcolor进行显示图片时,要调用colormap,caxis,shading进行设置,才有可能还原图片本来的色彩pcolor的用法是:pcolor(N)其中N是一个矩阵,矩阵的行列数表示图片有多...
  • WhoisPo
  • WhoisPo
  • 2015年11月19日 16:24
  • 6573

IR cut filter 与 color shading

IR cut filter,即红外截止滤光片,它放在于LENS与Sensor之间。因人眼与CMOS Sensor对各波长的响应不同,人眼看不到红外光但sensor会感应,因此需要IR cut filt...
  • hudaliquan
  • hudaliquan
  • 2015年03月18日 11:30
  • 2596
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Shading
举报原因:
原因补充:

(最多只允许输入30个字)