摘要: 原帖地址:http://www.cnblogs.com/gongminmin/archive/2011/07/15/2107290.html多年来,在论坛和各个网站上不断能看到拿OpenGL和D3D进行比较的帖子和文章。他们经常制造很多谜思,使得初学者和一些从业人员对 OpenGL和D3D产生了各种各样的流言。有人说,OpenGL直接调到驱动,性能高于D3D。有人说,Shader都得写两套,很麻烦。有人说,OpenGL和D3D在底层有很多区别,而且不可设置。有人说,图形引擎如果要兼容两者,就只能取其功能的交集,最后还不如任何一种API。真的么?本文试图:找出现代OpenGL和D3D的共通之处归 阅读全文
posted @ 2012-09-09 19:58 ActionFG 阅读(685) 评论(0) 推荐(1) 编辑
摘要: OPS:绘制方式是通过glVertex,逐顶点绘制,甚至能实现三角形逐顶点排序自身方案:ParticleEmitter类只负责管理自身particle数组的更新(生命期、位置等), ParticleSystem负责收集Emitter的所有particle,排序并最终生成Mesh 阅读全文
posted @ 2012-09-09 19:55 ActionFG 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 简单来说需要先copyResources至新Buffer中,再Map,文档详见:Copying and Accessing Resource Data (Direct3D 10).新Buffer的创建如下:(其中RainVertex为自定义的顶点格式)// 测试CPU读取Streamoutput结果 [2/2/2012 dell] D3D10_BUFFER_DESC staginDESC; ZeroMemory(&staginDESC, sizeof(staginDESC)); staginDESC.ByteWidth = sizeof(RainVertex) * g_num... 阅读全文
posted @ 2012-09-09 19:54 ActionFG 阅读(424) 评论(0) 推荐(0) 编辑
摘要: 这些函数可能是新的OpenGL函数,并没有在标准OpenGL库中实现,或者它们是用来扩展已存在的OpenGL函数的功能。和glu、glx和 wgl 一样,这些OpenGL扩展是由硬件厂商和厂商组织开发的。OpenGL扩展(OpenGLExtention)包含了大量的扩展API函 数。 随着硬件的更新,硬件厂商首先向SGI申请登记新的扩展,编写规格说明书(specification)。然后按照说明书进行开发扩展程序。不同的 OpenGL实现(OpenGLImplementation)支持的扩展可能不一样,只有随着某一扩展的推广与应用以及硬件技术的提高该扩 展才会在所有的Open... 阅读全文
posted @ 2012-09-09 19:53 ActionFG 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 1、D3DXCompileShaderFromFile编译shader文件时,提示E_Fail(shader文件确定无错)答:可能是因为新版本的SDK默认使用DX10的HLSL编辑器引擎的问题,如果是这种情况,只要在调用D3DXCreateEffectFromFile时 的flag参数里面加上3DXSHADER_USE_LEGACY_D3DX9_31_DLL这个值就可以了。DX SDK的文档里面有说的,在D3DXSHADER Flags这个主题里面。 不过说的很隐晦,要两个地方结合起来看: 1)D3DXCreateEffectFromFile 函数对Flag... 阅读全文
posted @ 2012-09-09 19:52 ActionFG 阅读(1085) 评论(0) 推荐(0) 编辑
摘要: 基本贴图:TextureCube m_EnvCubeMap;隐形:额外参数:背景贴图 m_backgroundTexture;实现基本原理:// invisible pervasion vec4 fragColor = reflectColor; fragColor += vec4(g_Time / 10.0); fragColor = min(fragColor,1.0); float damn = pow(fragColor.r, 50.0) * (1.0 - fragColor.r) * 120.0; vec4 edgeColor = abs(vec4(no... 阅读全文
posted @ 2012-09-09 19:51 ActionFG 阅读(396) 评论(0) 推荐(0) 编辑
摘要: I. Introduction原型:NVIDIA Direct3D SDK 10中cloth例子,Nvidia Direct3D SDK9 中有基于pixelShader的版本。II. Body Paragraph完整支持GeometryShader和StreamOutput技术需OpenGL3 其他则需要扩展支持 GL_EXT_geometry_shader4 is available on nVidia Gf 8 series and up. Gf 8 is a SM 4.0 GPU With ATI/AMD, al... 阅读全文
posted @ 2012-09-09 19:48 ActionFG 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 假定两套shader(即opengl中的program)都完全编译好,并都分配id等,只是未连接(link)而已链接地址:http://www.opengpu.org/bbs/forum.php?mod=viewthread&tid=1300可能消耗:1. shader中有无写z和alpha test会决定是否启用heirachical z,如这类的shader切换发生,则需要把之前的z buffer都resolved掉; 2. shader对texture sampler slot使用的不同可能会导致不用的texture cache layout,往往需要dirty整个te... 阅读全文
posted @ 2012-09-09 19:47 ActionFG 阅读(936) 评论(0) 推荐(0) 编辑
摘要: 在GeForce 6800 Ultra中,有多达16组像素着色器流水线, 6组顶点着色器流水线。多条流水线可以在单一控制部件的集中控制下运行,也可以独立运行。在单指令多数据流(SIMD)的结构中,单一控制部件向每条流水线分派指令,同样的指令被所有处理部件同时执行。另外一种控制结构是多指令多数据流(MIMD),每条流水线都能够独立于其他流水线执行不同的程序。 GeForce 6800 Ultra的顶点着色器流水线使用MIMD方式控制,像素着色器流水线使用SIMD结构。MIMD能比较有效率地执行分支程序,而SIMD体系结构运行条 件语句时会造成很低的资源利用率。不过SIMD需要硬件少,这是一个优势 阅读全文
posted @ 2012-09-09 19:46 ActionFG 阅读(505) 评论(0) 推荐(0) 编辑
摘要: Shadow Mapping已经成为当前3D游戏的标配。传统SM+PCF可以很好地实现日光环境下的Hard Shadow,但如果要实现由昏暗灯光所产生的Soft Shadow,则要么效果过于生硬(sample次数少)要么效率低下(sample次数多)。因此,越来越多的游戏开始使用能够充分利用硬件特性的软阴 影算法。 这里主要总结各种Soft Shadow Mapping的算法思想和推导过程,不提及实现上的细节和具体代码,等有空再写写Demo。Standard Shadow Maps Shadow Map的基本思想:Light View画一遍Depth,然后C... 阅读全文
posted @ 2012-09-09 19:44 ActionFG 阅读(560) 评论(0) 推荐(0) 编辑