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. 嗨分享-前端技术-帝国CMS手机站修改列表分页(sysShowListMorePage)

    http://bbs.phome.net/showthread-31-318753-0.html 如果你的网站使用的是帝国CMS.PC站和手机站各使用一个模板组,但共同使用一个数据库.那么你的PC站和 ...

  2. jquery页面刷新reload

    今天知道了jquery页面刷新的一个方法,很简单的一句: window.location.reload()刷新当前页面,不得不说我jquery学的很糟糕,明明都学过,但是等用到的时候就想不起来了.不过 ...

  3. Mono for Android (3)-- AbsoluteLayout、FrameLayout、LinearLayout、RelativeLayout、TableLayout

    AbsoluteLayout:允许开发人员将视图放在所定义的位置.该布局已经过时了,建议改用其他 FrameLayout:最简单的布局选项,其设计目的是在屏幕上显示单个对象.所有元素都固定在左上角.如 ...

  4. C++中复制构造函数与重载赋值操作符总结

    前言 这篇文章将对C++中复制构造函数和重载赋值操作符进行总结,包括以下内容: 1.复制构造函数和重载赋值操作符的定义: 2.复制构造函数和重载赋值操作符的调用时机: 3.复制构造函数和重载赋值操作符 ...

  5. C++中的链表节点用模板类和用普通类来实现的区别

    C++中的链表节点通常情况下类型都是一致的.因此我们可以用模板来实现. #include <iostream> using namespace std; template<typen ...

  6. Portion of class Throwable’s inheritance hierarchy

  7. JS 学习笔记--13---原型

    练习中使用的是IE11,如果有错误之处,还请各位朋友多多指教.本文关于原型难以描述,故多用代码展示 原型是JS中一个很重要的概念,也是JS中一个难点,语言上难以描述,原型对象的属性和方法叫做原型属性和 ...

  8. JavaScript + HTML DOM (keep for myself)

    1.改变 HTML 输出流 JavaScript 能够创建动态的 HTML 内容 eg. <script>document.write(Date());</script> 绝对 ...

  9. Winform DataGridView扩展

    public class ObjectPropertyCompare<T> : IComparer<T> { private readonly PropertyDescript ...

  10. 【翻译】Sencha Touch2.4 The Layout System 布局

    [翻译]The Layout System 布局 In Sencha Touch there are two basic building blocks: componentsand containe ...