随笔分类 -  D3D

D3D编程
Directx11教程(19) 画一个简单的地形
摘要:通常我们在xz平面定义一个二维的网格,然后y的值根据一定的函数计算得到,比如正弦、余弦函数的组合等等,可以得到一个看似不错的地形或者水面的效果。 在本教程中我们修改ModelClass.h和ModelClass.cpp,得到一个近似的地形。 在本章代码中,我们定义300*300=90000个顶点,共(300-1)(300-1)*2个三角形,每个网格的大小都为1. ... 阅读全文

posted @ 2012-03-25 11:00 迈克老狼2012 阅读(4870) 评论(2) 推荐(1) 编辑

Directx11教程(18) D3D11管线(7)
摘要:光栅化阶段(RS)之后,将进入PS/OM阶段。 参考外文资料:http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-7/ 大致的管线流程应该是这样的: RS光栅化的fragment达到64或者32(一个wave或者warp)后,PS调度模块会产生一个新的wa... 阅读全文

posted @ 2012-03-25 08:39 迈克老狼2012 阅读(2840) 评论(0) 推荐(0) 编辑

Directx11教程(17) D3D11管线(6)
摘要:VS shader输出clip空间的顶点位置及参数信息(比如颜色)到一个FIFO中,之后PA(primitive assembly)会从该FIFO中取得顶点位置信息,并根据IA传来的primitive信息,把单独的顶点装配成点、线或者三角形。经过PA阶段后,我们不再是处理单个顶点,而是处理整个体元。 参考资料:http://fgiesen.wordpress.com/2011/07/... 阅读全文

posted @ 2012-03-24 21:42 迈克老狼2012 阅读(2687) 评论(0) 推荐(0) 编辑

Directx11教程(16) D3D11管线(5)
摘要:本章我们学习VS中具体做些什么事情? 首先再看看我们的VS shader代码: Clolor.vs … PixelInputType ColorVertexShader(VertexInputType input) { PixelInputType output; // Change the position vector... 阅读全文

posted @ 2012-03-24 09:57 迈克老狼2012 阅读(3216) 评论(0) 推荐(3) 编辑

Directx11教程(15) D3D11管线(4)
摘要:本章我们首先了解一下D3D11中的逻辑管线,认识一下管线中每个stage的含义。 参考资料:http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-3/ D3D11逻辑管线如下图所示: 首先,我们来学习一下每个stage的名字含义,在后面章节学习它们的细节功能... 阅读全文

posted @ 2012-03-24 08:50 迈克老狼2012 阅读(5121) 评论(0) 推荐(2) 编辑

Directx11教程(14) D3D11管线(3)
摘要:现在我们开始学习一些CP(command processor)的知识。参考资料: http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-3/ CP(command processor)应该是GPU最前端的block,它从位于video memory中的... 阅读全文

posted @ 2012-03-21 19:37 迈克老狼2012 阅读(3301) 评论(0) 推荐(2) 编辑

Directx11教程(13) D3D11管线(1)
摘要:从本篇教程开始,我们暂停代码的学习,先来了解一下D3D11的管线,这些管线不涉及具体的硬件,而是着重于理解能够支持D3D11的管线实现。 参考资料: http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-1/ 通过前面的教程,我们知道,要用D3D11... 阅读全文

posted @ 2012-03-20 19:20 迈克老狼2012 阅读(5961) 评论(0) 推荐(0) 编辑

Directx11教程(12) 禁止alt+enter全屏窗口
摘要:在D3D11应用程序中,我们按下alt+enter键,会切换到全屏模式。有时候,我们在WM_SIZE中有一些代码,全屏时,会使得程序崩溃,比如之前教程的代码,就是如此。 下面我们在D3DClass.cpp 中,增加代码,禁止alt+enter键全屏。有两种方法可以做到这个功能,下面我们分别贴出代码: 第一种方法: D3DClass.cpp中修改Initia... 阅读全文

posted @ 2012-03-19 21:11 迈克老狼2012 阅读(3016) 评论(0) 推荐(0) 编辑

Directx11教程(11) 增加一个debug宏
摘要:现在我们在common.h中增加一个debug的宏,在每个d3d11函数后调用,如果d3d函数出错,它能够给出程序中错误的代码行数。 common.h代码如下: #pragma once #include <d3d11.h> #include <d3dx10math.h> #if defined(DEBUG) || defined(_DEBUG) #if... 阅读全文

posted @ 2012-03-18 13:51 迈克老狼2012 阅读(1408) 评论(0) 推荐(0) 编辑

Directx11教程(10) 画一个简易坐标轴
摘要:本篇教程中,我们将在三维场景中,画一个简易的坐标轴,分别用红、绿、蓝三种颜色表示x,y,z轴的正向坐标轴。 为此,我们要先建立一个AxisModelClass类,来表示坐标轴顶点。 现在系统类之间的关系图如下: AxisModelClass类和前面的ModelClass类相似,只是创建顶点缓冲和索引缓冲时,指定了3条线段,表示三个坐标轴。 AxisModel... 阅读全文

posted @ 2012-03-18 12:45 迈克老狼2012 阅读(3102) 评论(0) 推荐(0) 编辑

Directx11教程(9) 增加一个TimerClass类
摘要:在上篇教程代码的基础上,我们增加一个TimerClass类,这个类的功能很简单,就是可以计算相邻2帧的时间差。利用这个时间差值,可以实现平滑的动画,使得动画不会因为不同机器fps不同,从而动画效果变快或者变慢。 我们主要是利用QueryPerformanceCounter函数来查询定时器的计数值。 如果硬件里有定时器,它会启动这个定时器,之后会不断获取定时器的值,这样... 阅读全文

posted @ 2012-03-12 20:26 迈克老狼2012 阅读(1635) 评论(0) 推荐(0) 编辑

Directx11教程(8) 一个新的camera类
摘要:本章我们将替换掉CameraClass类,实现一个稍微靠谱点的摄像机类。并通过Q,W,E,A,S,D,Z,X,C等按键实现摄像机的控制。 该类的主要功能就是根据指定的摄像机位置,up方向以及lookat方向,得到最终的视图矩阵,所谓视图矩阵就是把世界坐标系的顶点位置转化到视点(或者说摄像机)空间的矩阵。该类可以实现两种模式的摄像机操作,一类是AIRCRAFT摄像机,允许摄像机... 阅读全文

posted @ 2012-03-11 21:33 迈克老狼2012 阅读(5303) 评论(2) 推荐(2) 编辑

Directx11教程(7) 画一个颜色立方体
摘要:前面教程我们通过D3D11画了一个三角形,本章我们将画一个颜色立方体,它的立体感更强。主要的变动是ModelClass类,在ModelClass中定义一个立方体需要的顶点信息,然后创建顶点缓冲和索引缓冲。 在ModelClass.h中,我们定义一些宏来表示颜色,以便后面给顶点颜色属性赋值时用。 ModelClass.h代码如下: #pragma once #inc... 阅读全文

posted @ 2012-03-11 13:29 迈克老狼2012 阅读(2837) 评论(1) 推荐(0) 编辑

Directx11教程(6) 画一个简单的三角形(2)
摘要:在上篇教程中,我们实现了在D3D11中画一个简单的三角形,但是,当我们改变窗口大小时候,三角形形状却随着窗口高宽比例改变而改变,如下图所示: 这是因为我们改变了窗口大小,但后缓冲大小在程序初始化时候,已经被指定,不随着窗口改变而改变,这样在视口映射下,我们所渲染的三角形就改变了形状。 下面我们将对程序进行一些小的改动,从而实现改变窗口大小,而渲染的图形... 阅读全文

posted @ 2012-03-11 13:11 迈克老狼2012 阅读(2499) 评论(1) 推荐(0) 编辑

Directx11教程(5) 画一个简单的三角形(1)
摘要:在本篇教程中,我们将通过D3D11画一个简单的三角形。在D3D11中,GPU的渲染主要通过shader来操作(当然还有一些操作是由GPU固定管线完成,比如光栅化操作),最常用的shader操作是顶点shader(vertex shader)和像素shader(pixel shader)。其实shader就是在GPU中执行的代码,这些代码被driver编译成硬件依赖的机器码,最终被GPU... 阅读全文

posted @ 2012-03-11 10:23 迈克老狼2012 阅读(7384) 评论(11) 推荐(0) 编辑

Directx11教程(4) 一个最基本D3D应用程序(2)
摘要:接着上篇教程的代码,本篇加入基本的D3D代码,实现一个完整的D3D11程序框架。 我们增加一个新类D3DClass, 用来处理3D渲染功能。增加该类后,程序的框架如下图: GraphicsClass.h代码改变如下, 主要是增加了一个D3DClass类成员变量,在Render函数中,将会调用D3DClass的相应Render函数,比如BeginScene、EndScen... 阅读全文

posted @ 2012-03-08 21:29 迈克老狼2012 阅读(8124) 评论(9) 推荐(0) 编辑

Directx11教程(3) 一个最基本D3D应用程序(1)
摘要:在前一篇教程程序代码的基础上,这次我们将增加2个类: InputClass,键盘处理的代码将放在这个类里面,GraphicsClass类,D3D渲染的代码放在这个类里,这两个类都是SystemClass类的成员变量,SystemClass类中会调用这2个类实例的初始化、渲染以及shutdown函数。 增加这个两个类后,应用的程序的框架如下: System... 阅读全文

posted @ 2012-03-08 21:28 迈克老狼2012 阅读(8525) 评论(6) 推荐(0) 编辑

Directx11 教程(2) 基本的windows应用程序框架(2)
摘要:在本教程中,我们把前面一个教程的代码,进行封装。把初始化函数,Run函数,窗口回调函数,ShutdownWindows函数等封装到一个System class中。 首先我们要在前面建立的solution,myTutorialD3D11中,鼠标右键点击,选择New Project, 创建一个名为myTutorialD3D11_1的空工程,在工程中增加main.... 阅读全文

posted @ 2012-03-08 21:27 迈克老狼2012 阅读(4811) 评论(0) 推荐(0) 编辑

Directx11 教程(1) 基本的windows应用程序框架(1)
摘要:在vs2010中,建立一个新的win32工程,名字是: myTutorialD3D11, 注意:同时勾选Create directory for solution,我们同时建立一个solution,后面教程的所有的工程文件,我们都建立在这个solution中。 勾选 Emtpy project 增加source files->add new item->main... 阅读全文

posted @ 2012-03-08 21:25 迈克老狼2012 阅读(8653) 评论(2) 推荐(2) 编辑

Gamma Correction: A Story of Linearity
摘要:from: http://www.geeks3d.com/20101001/tutorial-gamma-correction-a-story-of-linearity/ 1 – What is gamma correction and why is it important? 2 – How to achieve gamma correction? 3 – Downloa... 阅读全文

posted @ 2012-02-03 13:40 迈克老狼2012 阅读(1240) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示