自由顶点格式(flexible vertex format,FVF)

http://www.cnblogs.com/xmzyl/articles/1604096.html

if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
{
// Draw the triangles in the vertex buffer. This is broken into a few
// steps. We are passing the Vertices down a "stream", so first we need
// to specify the source of that stream, which is our vertex buffer. Then
// we need to let D3D know what vertex shader to use. Full, custom vertex
// shaders are an advanced topic, but in most cases the vertex shader is
// just the FVF, so that D3D knows what type of Vertices we are dealing
// with. Finally, we call DrawPrimitive() which does the actual rendering
// of our geometry (in this case, just one triangle).
g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof( CUSTOMVERTEX ) );
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 );

// End the scene
g_pd3dDevice->EndScene();
}

通过setFVF 按照我的理解 就是告诉shader 他要处理的vertices里面的格式

注释那段话已经说的很详细了 我们自己定义vertex buffer里的结构类型 ,比如D3DFVF_XYZ,D3DFVF_NORMAL,D3DFVF_TEX0.....

很眼熟吧,你规定的这些是可以在shader中使用的。

------------------------------------------------------------------------------

因为很多链接会失效,我还是把那段抄过来吧 ,有关fvf的使用步骤

struct CustomerVertex
{
  FLOAT x,y,z,rhw;
  DWORD color; 
};

#define D3DFVF_CUSTOMVERTEX(D3DFVF_XYZRHW|D3DFVF_DIFFUSE)

g_pd3dDevice->CreateVertexBuffer(3*sizeof(CUSTOMVERTEX),
                                 0, 
                                 D3DFVF_CUSTOMVERTEX,
                                 D3DPOOL_DEFAULT, 
                                 &g_pVB, NULL )

CUSTOMVERTEX vertices[] =
{
  { 100.0f, 400.0f, 0.5f, 1.0f, 0xffff0000, },
  { 300.0f,  50.0f, 0.5f, 1.0f, 0xff00ff00, }, 
  { 500.0f, 400.0f, 0.5f, 1.0f, 0xff0000ff, },
};

然后将数据写入缓冲区:
 
 
VOID* pVertices;
if( FAILED( g_pVB->Lock( 0, sizeof(vertices), (void**)&pVertices, 0 ) ) )
  return E_FAIL;
memcpy( pVertices, vertices, sizeof(vertices) );
g_pVB->Unlock();
 
 
这里写入的过程用的是Lock函数得到的缓冲区的地址,然后用memcpy函数将自己写好的数据写进去。到这里,顶点就算是创建好了。

DX SetFVF的更多相关文章

  1. 计算ffff:0~ffff:b数据的和,结果存在dx中

    代码: assume cs:sad sad segment start: mov ax, 0ffffh mov ds, ax mov dx, ; add ds:0bh~ds:1h mov cx, 0b ...

  2. 桌面 透明 三角形 分层窗口 DX

    //桌面 透明 三角形 分层窗口 DX //IDirect3DSurface9 GetDC UpdateLayeredWindow #include <Windows.h> #includ ...

  3. DEV中dx:ASPxPopupControl 控件的使用(在窗口关闭或隐藏时,清楚文本框中的内容)

    //在窗口关闭或隐藏时,清楚文本框中的内容(核心代码) function(s, e) { ASPxClientEdit.ClearGroup('entryGroup'); } <asp:Cont ...

  4. Dx unsupported class file version 52.0

    最近用ADT时遇到这个bug,折腾了好几天. 报错信息: Dx unsupported class file version 52.0 Conversion to Dalvik format fail ...

  5. Devexpress GridView内嵌dx:ASPxGridLookup取得控件值乱跳解决方案

    一 页面嵌入ASPxGridLookup控件 <dx:ASPxGridView ID="gridDetail" runat="server"        ...

  6. [Zz] DX depth buffer

    声明:本文完全翻译自DX SDK Documentation depth buffer,通常被称为z-buffer或者w-buffer,是设备的一个属性,用来存储深度信息,被D3D使用.当D3D渲染一 ...

  7. dx wpf的各种坑

    这篇随笔总结dx wpf使用中的各种坑,持续更新~ LookUpEdit里内嵌的DXGrid的名字必须是"PART_GridControl",不能不写.也不能写错.我对比了2个小时 ...

  8. Android java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor ver

    java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor ver 解决 ...

  9. DX 的.x 文件

    template Header { <3D82AB43-62DA-11cf-AB39-0020AF71E433> WORD major; WORD minor; DWORD flags;} ...

随机推荐

  1. 【转】 memwatch使用说明书

    memwatch使用说明书 1.memwatch是什么?    memwatch是C语言的内存检测器.除了检测内存的功能外,它同样可以做其它的一些事情,而我们主要还是在于讲述它的基本功能.如果你真的想 ...

  2. 苹果系统开发中的混合编程(1):Objective-C和C++的相互调用

    首先是OC调用C++的代码.   创建一个Objective-C的项目,并创建c++文件MyCppFile.hpp和MyCppFile.cpp.   把要调用Cpp代码的文件名改成mm后缀名,项目代码 ...

  3. ios 中的block应用

    在这个大冬天里默默敲着键盘,勿喷.今天学习swift过程中,学习到闭包,发现闭包和oc的block中有很多的相同之处,又重新学习了一下并且学习了一些高级点的用法,内容如下: 1.block格式说明:( ...

  4. MPlayerX For Mac白屏问题

    在Mac App store下载了MPlayerX后,如果系统版本是10.10的,用MPlayerX看视屏当选择全屏后会出现白屏现象只有声音退出全屏后仍旧是白屏. 这是因为MPlayerX已经在Mac ...

  5. netstat监控大量ESTABLISHED连接与Time_Wait连接问题(转载)

    问题描述: 在不考虑系统负载.CPU.内存等情况下,netstat监控大量ESTABLISHED连接与Time_Wait连接. # netstat -n | awk '/^tcp/ {++y[$NF] ...

  6. argularJS学习笔记-增删改

    <!doctype html> <html lang="en" ng-app> <head> <meta charset="UT ...

  7. html设置360兼容/极速模式

    由于众所周知的情况,国内的主流浏览器都是双核浏览器:基于Webkit内核用于常用网站的高速浏览.基于IE的内核用于兼容网银.旧版网站.以360的几款浏览器为例,我们优先通过Webkit内核渲染主流的网 ...

  8. Python 初学——V_Rename(第一个完整的python程序)

    我在大一的时候就对python非常感兴趣,就是一直没有时间和机会去学习下,只是了解些表面的东西,今天早上整理电脑的时候发现文件夹里面的文件名是这样子的,有点小不舒服,特别想去除重复的"Str ...

  9. 批量修改文件后缀(Python)

    近期下载了很多各种教程, 但是不幸的是后缀名都是 ".mp4", 而本人喜欢 ".rmvb" 后缀,由于有轻微洁癖, 受不了后面的 ".mp4&quo ...

  10. HDU 1405 第六周 J题

    Description Tomorrow is contest day, Are you all ready?  We have been training for 45 days, and all ...