关于direct3d重的zbuffer

Bobby 2000-04-04 11:26:00
各位图形学高手:
小弟为了direct3d即使模式的zbuffer都快发疯了。
为实现zbuffer得功能,我做了一下几个步骤:

1、用CreateSurface和??_3DDEVICE标志创建一个offscreen图面。
2、用EnumZBufferFormat(...HAL_DEVICE...)枚举到了一个16位的zbuffer格式。
3、用CreateSurface和DDCAPS_ZBUFFER and DDCAPS_VIDEOMEMORY标志创建那该死的ZBUFFER图面,没有显存不足的报告。
4、在把该zbuffer图面attach到刚才创建的offscreen图面。
5、用offscreen图面和CreateDevice创建一个3d设备(HAL DEVICE)。
6、在用SetRenderState(????_ZBUFFERENABLE,TRUE),使zbuffer有效。
7、在每次调用drawprimitive前用clear方法把zbuffer设置为1.0f。

但竟毫无效果,晚画的物体还是会出现在早画得物体前面。我如果把zbuffer的得深度比较公式设置为LESS而不是缺省值LESSEQUAL,那早画的物体就会出现在晚画的物体前面,由此可见所有的物体的z深度值都是一样的,这不是奇怪吗!
我画的物体是几个完全相同的球体(由两个TRIANGLEFAN和16个TRIANGLESTRIP组成),他们在本地坐标系里面的每个顶点得本地坐标都是完全一样的,我是通过在调用drawprimitive前用SetTransForm(WORLD...)设置不同的世界坐标转换矩阵(都是平移矩阵)来实现球体得不同位置。
大虾们要使觉得有任何一点点不妥得地方,请一定要给我指出来,我为了它已经灰心了好几天了!
另外:我的显卡是i740。感激流涕!

Bobby diablohsh@163.net
...全文
223 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bobby 2000-05-23
  • 打赏
  • 举报
回复
唉,终于搞掂,原来是我设置的投影矩阵有误,投影矩阵必须是可逆矩阵才行!
好像不能给自己分吧,那大家平分了吧. :bobby
Bobby 2000-05-22
  • 打赏
  • 举报
回复
Hi all:
问题已经解决,原来是因为我设置的投影矩阵不是可逆矩阵造成的,真实倒霉!

mr bobby
hanqiang 2000-05-03
  • 打赏
  • 举报
回复
我想错误出现在你创建对象的顺序上,应该是先创建Device,后建ZBuffer平面.
试一下吧.
blaise 2000-04-06
  • 打赏
  • 举报
回复
i feel strange about this:
7、在每次调用drawprimitive前用clear方法把zbuffer设置为1.0f

why u want to celar the zbuffer?if you clear the zbuffer to 1.f means you next triangle will comapre its depth with 1.f,so it must brawn.remove the clear and try.
if u still have problem, mail u code to me,(compilable and as simple as possible,don't send me code fragment.blaise@kali.com.cn)
示例程序目录及简要说明 第2章 Direct3D程序设计基础 CreateDevice 演示Direct3D程序的基本框架,以及如何创建Direct3D对象和Direct3D设备对象。 第3章 坐标系与基本图元 1、VertexBuffer 演示使用顶点缓冲区对象绘制基本图元。 2、BasicPrimitive 演示Direct3D中6种基本图元的绘制。通过单击键盘上的“1”~“6”数字键可以在各图元类型之间进行切换。 3、IndexBuffer 演示使用顶点缓冲区和索引缓冲区绘制基本图元。 4、RenderState 演示顶点着色模式和图形填充方式两个基本渲染状态对图形显示的影响。通过单击鼠标左键在两个着色模式之间进行切换,单击鼠标右键在3种图形填充模式之间进行切换。 5、AntiAlisa 演示通过多采样实现图形反锯齿效果。程序运行时通过单击鼠标左键可以在启用和禁用图形反锯齿效果之间进行切换。 6、FullScreen 演示全屏幕显示模式Direct3D程序的开发,主要是创建全屏显示模式的Direct3D设备。因为程序运行在全屏模式下,所以不能像运行在窗口模式下那样,通过单击标题栏上的“关闭”按钮来关闭程序,可以通过单击键盘上的“Esc”键退出程序,也可以通过按下“Alt+F4”键退出程序。 第4章 顶点坐标变换 Transfrom 演示三维坐标变换、视区变换,以及简单动画的实现。 第5章 光照与材质 1、SimpleLighting 演示灯光的使用。 2、Multilights 演示同时使用多个光源的效果。一共使用三个光源,分别是漫反射方向光光源、漫反射点光源、镜面反射方向光光源。默认情况下,3个光源全部关闭,按下数字键“1”,启用1号光源;按下数字键“2”,启用2号光源;按下数字键“3”,启用3号光源;按下数字键“4”,3个光源全部启用;按下数字键“0”,3个光源全部关闭。 第6章 纹理映射基础 1、TextureBase 演示使用纹理贴图的基本步骤。 2、TexFilterMode 演示最近点采样和线性纹理过滤方式。在程序运行时,单击键盘上的数字键“1”,使用最近点采样纹理过滤方式,单击键盘上的数字键“2”,则使用线性纹理过滤。 3、MipTexture 演示如何创建和使用多级渐进纹理。程序运行时,单击键盘上的数字键“1”,则使用多级渐进纹理,单击数字键“2”,则使用单级别纹理。通过按下“↓”键和“↑”键可以放大和缩小显示的图形,从而可以仔细观察图像的变化,看到多级渐进纹理的效果。 4、TexAddressMode 演示不同纹理寻址模式的效果。程序运行时,单击键盘上的数字键“1”,使用叠纹理寻址模式,单击键盘上的数字键“2”,使用镜像纹理寻址模式,单击键盘上的数字键“3”,使用夹取纹理寻址模式,单击键盘上的数字键“4” ,使用边框颜色纹理寻址模式。 5、TexRenderState 演示纹理阶段混合状态的使用。 第7章 使用文件模型 1、Mesh 演示.X文件模型的使用,包括从.X文件中加载模型生成网格模型对象,渲染网格模型。 2、StateControlUseMatrix 演示使用矩阵旋转网格模型。程序运行时按下“D”和“A”键可以使飞机模型绕自身z轴旋转;按下“S”和“W”键可以使飞机模型绕x轴旋转;按下“Q”和“E”键可以使飞机模型绕自身y轴旋转;按下“F”和“V”键可以使飞机模型向前和向后运动。 3、StateControlUseQua 演示使用四元数旋转网格模型。程序运行时按下“D”和“A”键可以使飞机模型绕自身z轴旋转;按下“S”和“W”键可以使飞机模型绕x轴旋转;按下“Q”和“E”键可以使飞机模型绕自身y轴旋转;按下“F”和“V”键可以使飞机模型向前和向后运动。 第8章 深度测试与Alpha混合 1、ZTest 演示深度测试的使用。程序运行时按下数字键“1”启用深度测试,按下数字键“0”,则禁用深度测试。 2、AlphaBlend 演示使用Alpha混合实现半透明效果。程序运行时按下数字键“1”,启用Alpha混合,按下数字键“0”,则禁用Alpha混合。 3、VertexAlpha 演示直接为顶点颜色设置Alpha值。程序运行时按下数字键“1”,启用Alpha混合,按下数字键“0”,则禁用Alpha混合。 4、TextureAlpha、 演示通过纹理混合获取Alpha 值。程序运行时按下数字键“1”,启用Alpha混合,按下数字键“0”,则禁用Alpha混合。 5、AlphaTest 演示Alpha测试的使用。程序运行时按下数字键“1”,启用Alpha测试,按下数字键“0”,则禁用Alpha测试。 第9章 雾化 1、VertexFog 演示顶点雾化效果。程序运行时按下数字键“1”,
  总目录   第一章 硬件接口   1.1 3D应用程序与硬件的交互作用    1.1.1 在计算机屏幕上显示图像    1.1.2 事件反应   1.2 使用不同的体系结构    1.2.1 MS-DOS.    1.2.2 MS-Windows.    1.2.3 X11.    1.2.4 NeXTStep.    1.2.5 MacOS.   第二章 3D变换   2.1 欧几里得空间,自由度和基本变换   2.2 平移   2.3 缩放   2.4 在平面内旋转   2.5 3D旋转    2.5.1 坐标系    2.5.2 变换次序   2.6 以矩阵形式表达变换   2.7 投影变换    2.7.1 平行投影    2.7.2 透视投影   2.8 通过定点算法实现变换    2.8.1 整型数表示    2.8.2 定点数运算    2.8.3 定点算法的实现   第三章 2D图元光栅处理   3.1 光栅化点   3.2 光栅化线段   3.3 光栅化多边形    3.3.1 光栅化凸多边形    3.3.2 光栅化凹多边形   3.4 内插渲染明暗处理的多边形   3.5 渲染纹理多边形   3.6 反走样   第四章 2D和3D裁剪   4.1 2D裁剪策略    4.1.1 点的裁剪    4.1.2 裁剪线段    4.1.3 裁剪多边形   4.2 3D裁剪策略   第五章 视处理   5.1 从世界到屏幕的方法    5.1.1 视系统参数    5.1.2 多边形管道    5.1.3 纹理多边形   5.2 从屏幕到世界的方法    5.2.1 直线方程    5.2.2 平面方程    5.2.3 直线和平面的交叉点    5.2.4 直线和多边形的交叉点    5.2.5 直线和球的交叉点    5.2.6 寻找合适的交叉点    5.2.7 优化光线追踪   第六章 建模   6.1 线框模型   6.2 多边形模型   6.3 三次曲线和双三次曲面   6.4 地形   6.5 体素模型   第七章 隐面消除   7.1 背面剔除算法   7.2 从后到前排序   7.3 顺序列表和八叉树   7.4 入口   7.5 二叉空间分割树   7.6 Beam树   7.7 扫描线算法   7.8 Z-buffer算法   第八章 光线   8.1 光线的物理特性与人的感觉   8.2 颜色模拟    8.2.1 非彩色光    8.2.2 颜色模型的三个成分   8.3 照明模拟    8.3.1 环境照明   8.3.2 漫反射    8.3.3 镜面反射   8.4 在屏幕到世界中观察照明   8.5 辐射度   8.6 在世界到屏幕中观察照明   第九章 构建3-D应用程序的实践方面   9.1 常规设计方法    9.1.1 面向对象编程    9.1.2 脚本   9.2 构建工具    9.2.1 OpenGL    9.2.2 Direct3D   9.3 应用程序的构建策略    9.3.1 实体视处理    9.3.2 室内场景视处理    9.3.3 室外场景视处理   附录   10.1 参考文献   10.2 常用公式
PowerBI系列之Power Query专题1.  获取数据 数据源种类介绍和获取Excel数据源输入数据和拷贝数据:创建辅助表解析Json/XML数据格式获取Web网页数据和URL添加动态参数连接数据的四种模式:Import、DirectQuery、Live Connection、Dual双 属于混合模式连接数据库:Sql server、 Mysql(直连但是必须先安装一个mysql插件)DirectQuery直连查询:Sql serverODBC方式获取数据表关联或多个Sql或调用存储过程获取数据SQL中动态传参和自定义函数: sql中使用参数或数据库名称使用参数连接Sharepoint和OneDrive数据源连接Dataset和Dataflow 替换本地数据源为Sharepoint数据源并保留数据处理操作 终止当前数据刷新Loading:Cancel Query数据源设置-置数据连接凭证PBIDS连接数据源创建和使用报表模块(输入或值列表)利用报表模板和参数控制线下报表数据权限DirectQuery启用自动页面刷新和更改检测管理聚合表提高DirectQuery查询性能动态M查询参数提高DirectQuery查询性能添加数据刷新时间 DateTime.LocalNow()和Getdate()2.  数据清洗和M语言M语言和官方文档介绍PowerQuery中查阅M函数:=#shared, Ctrl+Space提示数据清洗之常用技能:提升标题、更改数据类型、保留删除错误或空行,删除复项、选择列和删除列、填充单元格、合并列、拆分、提取、替换、条件替换、添加自定义列,添加条件列、添加索引列、分组、添加年月日列、追加和合并查询透视和逆透视以及转置合并单元格的Excel文件处理导入文件夹中多Excel文件并合并解决多文件合并中列顺序不一致使用参数和函数批量导入文件 文本中提取中文、英文、数字等处理双引号转义 列拆分详解解决列名改变错误解决列丢失错误动态显示、排序和命名列为所有列名添加前缀列名字母大写和分隔符调整Trim标题列中的多余空格如何处理load数据错误为什么load的Excel数据有null空行为什么load的Excel数据标题在第二行灵活添加占位符规范同类相似数据数据按多列排序为分组添加Index序号分组内值合并诊断工具分析数据处理过程PowerQuery小技巧分享 新冠病例活动轨迹地图标识 
Contents Preface vii About the Authors ix Introduction xix Section I—Geometry Manipulation Tricks 1 Using Vertex Shaders for Geometry Compression 3 Dean Calver Using Lookup Tables in Vertex Shaders 13 Carsten Wenzel Terrain Geomorphing in the Vertex Shader 18 Daniel Wagner 3D Planets on the GPU 33 Jesse Laeuchli Cloth Animation with Pixel and Vertex Shader 3.0 40 Kristof Beets Collision Shaders 58 Takashi Imagire Displacement Mapping 73 Tom Forsyth Section II — Rendering Techniques 87 Rendering Objects as Thick Volumes 89 Greg James Screen-aligned Particles with Minimal VertexBuffer Locking 107 O’dell Hicks Hemisphere Lighting with Radiosity Maps 113 Shawn Hargreaves iii Galaxy Textures 123 Jesse Laeuchli Turbulent Sun 127 Jesse Laeuchli Fragment-level Phong Illumination 131 Emil Persson Specular Bump Mapping on Pre-ps_1_4 Hardware 149 Matthew Halpin Voxel Rendering with PS_3_0 161 Aaron Burton Simulating Blending Operations on Floating-point Render Targets 172 Francesco Carucci Rendering Volumes in a Vertex & Pixel Program by Ray Tracing 177 Eli Z. Gottlieb Normal Map Compression 185 Jakub Klarowicz Drops of Water and Texture Sprites 190 Sylvain Lefebvre Advanced Water Effects 207 Kurt Pelzer Efficient Evaluation of Irradiance Environment Maps 226 Peter-Pike J. Sloan Practical Precomputed Radiance Transfer 232 Peter-Pike J. Sloan Advanced Sky Dome Rendering 240 Marco Spoerl and Kurt Pelzer Deferred Shading with Multiple Render Targets 251 Nicolas Thibieroz Meshuggah’s Effects Explained 270 Carsten Wenzel Layered Car Paint Shader 293 John Isidoro, Chris Oat, and Natalya Tatarchuk Motion Blur Using Geometry and Shading Distortion 299 Natalya Tatarchuk, Chris Brennan, Alex Vlachos, and John Isidoro Contents iv Simulation of Iridescence and Translucency on Thin Surfaces 309 Natalya Tatarchuk and Chris Brennan Floating-point Cube Maps 319 Arkadiusz Waliszewski Stereoscopic Rendering in Hardware Using Shaders 324 Thomas Rued Hatching, Stroke Styles, and Pointillism 340 Kevin Buchin and Maike Walther Layered Fog 348 Guillaume Werle Dense Matrix Algebra on the GPU 352 Ádám Moravánszky Section III — Software Shaders and Shader Programming Tips 381 Software Vertex Shader Processing 383 Dean P. Macri x86 Shaders–ps_2_0 Shaders in Software 396 Nicolas Capens SoftD3D: A Software-only Implementation of Microsoft’s Direct3D API 413 Oliver Weichhold Named Constants in Shader Development 432 Jeffrey Kiel Section IV — Image Space 437 Advanced Image Processing with DirectX 9 Pixel Shaders 439 Jason L. Mitchell, Marwan Y. Ansari, and Evan Hart Night Vision: Frame Buffer Post-processing with ps.1.1 Hardware 465 Guillaume Werle Non-Photorealistic Post-processing Filters in MotoGP 2 469 Shawn Hargreaves Image Effects with DirectX 9 Pixel Shaders 481 Marwan Y. Ansari Using Pixel Shaders to Implement a Mosaic Effect Using Character Glyphs 519 Roger Descheneaux and Maurice Ribble Contents v Mandelbrot Set Rendering 526 Emil Persson Real-Time Depth of Field Simulation 529 Guennadi Riguer, Natalya Tatarchuk, and John Isidoro Section V — Shadows 557 Soft Shadows 559 Flavien Brebion Robust Object ID Shadows 580 Sim Dietrich Reverse Extruded Shadow Volumes 587 Renaldas Zioma Section VI — 3D Engine and Tools Design 595 Shader Abstraction 597 Tom Forsyth Post-Process Fun with Effects Buffers 614 Tom Forsyth Shaders under Control (Codecreatures Engine) 625 Oliver Hoeller Shader Integration in the Gamebryo Graphics Engine 631 Scott Sherman, Dan Amerson, Shaun Kime, and Tim Preston Vertex Shader Compiler 650 David Pangerl Shader Disassembler 667 Jean-Sebastian Luce Index 675

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧