LPDIRECT3DVERTEXBUFFER9 g_VertexBuffer=NULL; //顶点缓存

LPDIRECT3DTEXTURE9 g_Texture=NULL;//纹理对象

bool InitializeObjects()
{
 //将含有纹理坐标的数据填充到该顶点结构数组中
 stD3DVertex objData[]=
 {
  {-0.3f, -0.4f, 0, D3DCOLOR_XRGB(255,255,255), 0, 1},
  {0.3f, -0.4f, 0, D3DCOLOR_XRGB(255,255,255), 1, 1},
  {0.3f, 0.4f, 0, D3DCOLOR_XRGB(255,255,255), 1, 0},

{0.3f, 0.4f, 0, D3DCOLOR_XRGB(255,255,255), 1, 0},
  {-0.3f, 0.4f, 0, D3DCOLOR_XRGB(255,255,255), 0, 0},
  {-0.3f, -0.4f, 0, D3DCOLOR_XRGB(255,255,255), 0, 1}
 };
 //创建顶点缓存
 if(FAILED(g_D3DDevice->CreateVertexBuffer(sizeof(objData),0,
  D3DFVF_VERTEX,D3DPOOL_DEFAULT,
  &g_VertexBuffer,NULL))) 
  return false;
 void *ptr;

//锁定顶点缓存,以进行读写操作。ptr指向该顶点缓存内存区域
 if(FAILED(g_VertexBuffer->Lock(0,sizeof(objData),
  (void**)&ptr,0)))  return false;
 //将objData内存区域的数据复制到ptr所指向的内存区域中
    memcpy(ptr,objData,sizeof(objData));

g_VertexBuffer->Unlock();

//加载纹理图像至该设备对象
 if(D3DXCreateTextureFromFile(g_D3DDevice,"ugp.tga",
  &g_Texture)!=D3D_OK)
  return false;

// 设置纹理采样模式(纹理过滤器)
 g_D3DDevice->SetSamplerState(0, D3DSAMP_MINFILTER,
  D3DTEXF_LINEAR); // 线性过滤
 g_D3DDevice->SetSamplerState(0, D3DSAMP_MAGFILTER,
  D3DTEXF_LINEAR); // 线性过滤

g_D3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE);          // 关闭光照
 g_D3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);  // 不剔除任何面

// Set the projection matrix.
 D3DXMatrixPerspectiveFovLH(&g_projection, 45.0f,
  WINDOW_WIDTH/WINDOW_HEIGHT, 0.1f, 1000.0f);

g_D3DDevice->SetTransform(D3DTS_PROJECTION, &g_projection);

// Set default rendering states.
 g_D3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE);

// Define camera information.
 D3DXVECTOR3 cameraPos(0.0f, 0.0f, -1.0f);
 D3DXVECTOR3 lookAtPos(0.0f, 0.0f, 0.0f);
 D3DXVECTOR3 upDir(0.0f, 1.0f, 0.0f);

// Build view matrix.创建视图矩阵
 D3DXMatrixLookAtLH(&g_ViewMatrix, &cameraPos,
  &lookAtPos, &upDir);

return true;
}

void RenderScene()
{
 // Clear the back buffer.
 g_D3DDevice->Clear(0, NULL, D3DCLEAR_TARGET,
  D3DCOLOR_XRGB(0,0,0), 1.0f, 0);

// Begin the scene.  Start rendering.启动绘制
 g_D3DDevice->BeginScene();

// Apply the view (camera).
 g_D3DDevice->SetTransform(D3DTS_VIEW, &g_ViewMatrix);

// 设置纹理
 g_D3DDevice->SetTexture(0, g_Texture);
 // 设置所要使用的顶点缓存与数据流的链接
 g_D3DDevice->SetStreamSource(0, g_VertexBuffer,
  0, sizeof(stD3DVertex));
 // 设置灵活顶点格式
 g_D3DDevice->SetFVF(D3DFVF_VERTEX);
 // 绘制该场景
 g_D3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 2);

// End the scene.  Stop rendering.
 g_D3DDevice->EndScene();

// Display the scene.
 g_D3DDevice->Present(NULL, NULL, NULL, NULL);
}

Textures的更多相关文章

  1. [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之纹理Textures

    [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之纹理Textures 本篇分享一下第6个已完工的视频,即<beginner Graphics ...

  2. Modify textures at runtime

    动态修改Texture Modify textures at runtime?http://answers.unity3d.com/questions/7906/modify-textures-at- ...

  3. Shader Model 3.0:Using Vertex Textures SM3:使用顶点纹理 (NVIDIA spec, 6800支持使用D3DFMT_R32F and D3DFMT_A32B32G32R32F的纹理格式实现Vertex Texture。)

    翻译者 周波 zhoubo22@hotmail.com 版权所有 Philipp Gerasimov Randima (Randy) Fernando Simon Green NVIDIA Corpo ...

  4. 【Unity Shaders】Using Textures for Effects —— 实现Photoshop的色阶效果

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  5. 【Unity Shaders】Using Textures for Effects——打包和混合textures

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  6. 【Unity Shaders】Using Textures for Effects——让sprite sheets动起来

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  7. 【Unity Shaders】Using Textures for Effects介绍

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  8. Creating Procedural Textures

    [Creating Procedural Textures] 由程序主生贴图,然后设置给Material.首先定义需要的数据: 在Start方法中完成初始化,注意设置的是_MainTex. 实现Gen ...

  9. METHODS OF AND APPARATUS FOR USING TEXTURES IN GRAPHICS PROCESSING SYSTEMS

    BACKGROUND The technology described herein relates to methods of and apparatus for using and handlin ...

  10. ETC1/DXT1 compressed textures are not supported when publishing to iPhone

    Build application in Unity 2017.20f3 用Unity2017/2018编译iPhone版本出现以下错误: ETC1(or DXT1) compressed textu ...

随机推荐

  1. 基于jquery的页面代码的优化

    高亮显示,选中的文字链接 显示效果如下 默认选择“通知公告”效果 通知公告 学院动态 行业动态       选择“学院动态”效果 通知公告 学院动态 行业动态       选择“行业动态”效果 通知公 ...

  2. SharePoint 2010 设置宽度1024px

    在模板页中找到 s4-workspace,设置class=”s4-nosetwidth“,然后再设置宽度为1024px:如果要居中,设置style=“margin:0 auto” 这样也会有一个问题: ...

  3. Linux下强制修改root密码方法(图)

    如果Linux操作系统的root密码,那怎么办呢?方法很多,下面再给大家介绍一种. [1] 进入以下画面后,按下e按钮,进入编辑模式: [2]进入以下的画面后,选择如下所示的选项,再次按下e按钮: 然 ...

  4. ionic:Build mobile apps faster with the web technologies you know and love

    http://ionicframework.com/getting-started/ 5 Ionic Framework App Development Tips and Tricks http:// ...

  5. 【Search Insert Position 】cpp

    题目: Given a sorted array and a target value, return the index if the target is found. If not, return ...

  6. makefile常用函数

    标签(空格分隔): makefile 1.字符串替换和分析函数 $(subst from,to,text) #在文本"text"中使用"to"替换每一处&quo ...

  7. JavaScript的DOM操作(2)

    补充:   回车符\r和换行符\n的区别:\r 相当于enter,是段落与段落之间的区别, \n 相当于shift+enter,是行与行之间距离,比较小 几种window操作方法: 1.获取当前窗口大 ...

  8. 删除vlan的方法

    方法一: 删除VLAN     先删接口     switch(config)#int ra f0/1 - 5     switch(config-if)#no switchport access v ...

  9. BZOJ 1012: [JSOI2008]最大数maxnumber 线段树

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1012 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作.语法:Q L 功能: ...

  10. hdu 2686 Matrix 最小费用最大流

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2686 Yifenfei very like play a number game in the n*n ...