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. UIImagePickerController之Block回调

    方法使用:引入头文件 #import "UIImagePickerController+Block.h" 我这拖出来的两个属性 @property (weak, nonatomic ...

  2. [转]AngularJS: 使用Scope时的6个陷阱

    在使用AngularJS中的scope时,会有6个主要陷阱.如果你理解AngularJS背后的概念的话,这6个点其实非常的简单.但是在具体讲述这6个陷阱之前我们先要讲两个其它的概念. 概念1: 双向数 ...

  3. 009--VS2013 C++ 显示位图部分透明化

    其实这个更简单,只是把上一编文章的半透明化的代码去掉就可以啦 还是原来那张图片: //全局变量HBITMAP bg, girl;HDC mdc;//起始坐标const int xstart = 50; ...

  4. Shade勒索病毒 中敲诈病毒解密 如 issbakev9_Data.MDF.id-A1E.f_tactics@aol.com.xtbl 解决方法

    [客户名称]:福建福州市某烘焙连锁企业 [软件名称]:思迅烘焙之星V9总部 [数据库版本]:MS SQL server 2000  [数据库大小]:4.94GB [问题描述]:由于客户服务器安全层薄弱 ...

  5. IT安全的本质

    (1)信任:服务端信任客户端的请求参数. (2)可控:客户端的请求参数可以被控制,任意修改. 服务端信任+客户端可控 =不安全. 服务端信任+客户端不可控=安全. 服务端不信任+客户端可控=安全. 服 ...

  6. 基于BaseAdapter的GridView设置ImageView大小

    基于BaseAdapter的GridView设置ImageView大小 网上找了好多,都是基于SimpleAdapter的,本身在Item.xml中就对ImageView设置了id,而基于BaseAd ...

  7. 阴影 box-shadow(一)

    阴影 box-shadow(一) box-shadow是向盒子添加阴影.支持添加一个或者多个. 很简单的一段代码,就实现了投影效果,酷毙了.我们来看下语法: box-shadow: X轴偏移量 Y轴偏 ...

  8. Node.js 学习(三) NPM 使用介绍

    NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服务器下载并 ...

  9. 【LRU Cache】cpp

    题目: Design and implement a data structure for Least Recently Used (LRU) cache. It should support the ...

  10. Netsharp快速入门(之3) 基础档案(之B 实体建模 新建项目)

    作者:秋时 杨昶   时间:2014-02-15  转载须说明出处 3.3     创建业务模型 3.3.1  新建项目 1.打开业务模型 2.打开业务模型后,在工具栏上选择操作-新增项目分类,标识这 ...