游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5446|回复: 14

3d游戏引擎中到底是自己来实现整个图形流水线还是调用

[复制链接]

8

主题

57

帖子

71

积分

注册会员

Rank: 2

积分
71
发表于 2006-5-25 23:34:00 | 显示全部楼层 |阅读模式
3d游戏引擎中到底是自己来实现整个图形流水线还是调用像DX和GL呢?
为什么我在QUAKE中没看到它们随身影呢?是OPENGL吗?
还有就是为什么在这些游戏引擎的源代码中老是喜欢把一些TYPE重新换个名字啊,怪难读的。

30

主题

569

帖子

569

积分

高级会员

Rank: 4

积分
569
发表于 2006-5-26 10:15:00 | 显示全部楼层

Re:3d游戏引擎中到底是自己来实现整个图形流水线还是调

一般引擎支持固定渲染管道和着色器两种模式。着色器模式要自己实现图形流水线。
用TYPE换名字就是为了提高可读性。

80

主题

173

帖子

189

积分

注册会员

Rank: 2

积分
189
发表于 2006-5-26 13:09:00 | 显示全部楼层

Re:3d游戏引擎中到底是自己来实现整个图形流水线还是调

个人觉得,如果要写引擎,使用DX,Gl只有多与少的问题。你完全可以建立一个双缓存将结构,全部用软件来实现。

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-5-26 13:36:00 | 显示全部楼层

Re:3d游戏引擎中到底是自己来实现整个图形流水线还是调

自己不可能写图形流水线的,写一个完整的渲染引擎除非用CPU来做,想要用GPU加速的话需要得到显示硬件、驱动的接口的支持,具体的硬件指令细节没有必要去关注。
引擎只是将DX和OGL重新封装了一遍,最底层的绘制还是得调用DX/OGL

80

主题

173

帖子

189

积分

注册会员

Rank: 2

积分
189
发表于 2006-5-26 13:51:00 | 显示全部楼层

Re:3d游戏引擎中到底是自己来实现整个图形流水线还是调

楼上的说的对。我觉得游戏引擎也就是和MFC里文档视图框架一样,也是一种架构。

2

主题

53

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2006-5-26 18:12:00 | 显示全部楼层

Re:3d游戏引擎中到底是自己来实现整个图形流水线还是调

Re:3d游戏引擎中到底是自己来实现整个图形流水线还是调用像DX和GL呢?

自己不可能写图形流水线的,写一个完整的渲染引擎除非用CPU来做,想要用GPU加速的话需要得到显示硬件、驱动的接口的支持,具体的硬件指令细节没有必要去关注。
引擎只是将DX和OGL重新封装了一遍,最底层的绘制还是得调用DX/OGL

22

主题

191

帖子

217

积分

中级会员

Rank: 3Rank: 3

积分
217
QQ
发表于 2006-5-28 09:07:00 | 显示全部楼层

流水线无法用软件"写"出来

前面的大哥已经说过了,不可能自习写流水线(除非用shaders).
gpu中的传统几何流水线是硬件设计的一个部分,一般就有几百上千级,
对于编程人员来说是透明的,我们只管尽量优化我们的程序来配合gpu的高速流水线的运作;
自己写流水线,不知道你是不是说shaders;shaders用于特效,引擎全部用shaders来写.....没有试过,估计效率比较恐怖,必尽可编程的实现没有固定渲染管道的流水线效率高;
如果是在dx10的时代,由于shaders的统一,shaders被大量应用,引擎可以利用这点实现目前显卡还不支持的流水线的渲染模式,比如光线跟踪等等....
也不知道这样分析对不对.

30

主题

569

帖子

569

积分

高级会员

Rank: 4

积分
569
发表于 2006-5-28 16:17:00 | 显示全部楼层

Re:3d游戏引擎中到底是自己来实现整个图形流水线还是调

偶也不是太清楚,不过我现在看的代码里shader中顶点是自己变换的。

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-5-28 17:04:00 | 显示全部楼层

Re:3d游戏引擎中到底是自己来实现整个图形流水线还是调

shader只是让你能控制硬件流水线的部分运作而已,既然已经是硬件了,怎么用程序去写出来呢?
DX和OGL只是提供一些最底层的东西用于控制硬件计算、绘制、渲染等操作,你调用DX的底层绘制函数如DrawPrimitive,DX会将对应的操作指令发送到显示驱动的指令缓冲区,直到EndScene指令发出,显示驱动一次性将这些指令发送到硬件,硬件开始工作,渲染出结果
为了保证不支持硬件加速的硬件也能在DX上达到硬件无关性,DX中提供了多种设备类型,比如软件模拟层REF,那么在这种情况下指令就会发给DX内部的软件渲染器,一切绘制改由CPU来执行,将不会提交给硬件驱动
以前DOS下没有硬件加速的概念,所有的计算和绘制操作都是由CPU来执行的,游戏内部都有一个渲染引擎,里面只所有最基本的3D绘制功能,你所谓的图形流水线应该就是这个意思吧。不过现在显卡内部已经硬件固化了所有基本的绘制功能,而且现代游戏如此恐怖的画面已经不可能全用CPU去计算了,所以现在游戏的渲染引擎只是包含一些相对高级的操作,基本操作直接调用DX和OGL即可,它会把所有基本操作交由硬件完成
不知道罗里八嗦的说了这么多LZ明白了没有

2

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2006-5-28 17:35:00 | 显示全部楼层

Re: 流水线无法用软件"写"出来

xjyhust: 流水线无法用软件"写"出来

前面的大哥已经说过了,不可能自习写流水线(除非用shaders).
gpu中的传统几何流水线是硬件设计的一个部分,一...


基本上是这样的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 15:31

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表