POPPUR爱换

标题: 作为一个业余游戏开发者,我不得不发发牢骚了 [打印本页]

作者: oz01    时间: 2008-12-8 12:43
标题: 作为一个业余游戏开发者,我不得不发发牢骚了
最近半年
我几乎每个月都要斯巴达一次
每次都是因为NV和ATI这对冤家令人讨厌的行为所导致
我用的A卡是X550
N卡是7600GT
由于我被DX那5XXMB的sdk给震撼了
所以选择opengl
好吧
我承认是我自找的
我也承认我能力很烂
又没读过几本书
但是我是个活人
我有权利吐槽

首先是渲染到纹理
在A卡上渲染到纹理的时候,Alpha通道也会保留
但是同样的代码同样的程序
到了N卡上
Alpha通道就固定变成1.0了
搞得我还以为N卡不支持混合
当然Alpha通道我还是需要用,所以开始折腾FBO
这回N卡有Alpha通道了
A卡又没了
偏偏我又用FBO写了bloom
这下可好,只能砍了bloom保证兼容性
2个月的业余时间我只得到两次斯巴达,以及两个扯淡的教训


然后是shadowMAP
我用的是NV的Cg
开始的时候我还庆幸A卡能正常使用NV搞的东西
但是在做shadowMAP的时候我终于知道什么叫冤家
shadowMAP需要用深度纹理
直接渲染到纹理又是两家效果不同,这也就算了
我又不是搞专业开发的,老显卡我也不管了
深度纹理我也用FBO
这次更有趣了
我在N卡的机器上写代码
深度纹理用了24位的
在N卡上一切正常
到了A卡上提示FBO与加载的纹理格式不同
大概X550不支持
我换16位的
这次轮到N卡提示不支持
好吧
24位你支持了
16位你反而不支持
你干脆连深度渲染都给禁用了岂不更好
为了判断显卡是哪家的
我又折腾了1星期
深度纹理总算能出来
在shader里读深度纹理的时候
又出现有趣的事情
N卡能自动识别纹理格式
如果是“被规定使用的深度纹理格式”那么就可以自动实现一堆功能
“被规定使用的深度纹理格式”到底是什么东东
Cg编程手册里没说明白
我翻遍glew头文件里所有的适合用于渲染深度的纹理格式
没一个能用的
A卡相关资料完全没有,ATI向来官方资料少

无奈之下
只好改用浮点纹理渲染
稍微翻了一下资料
发现关于浮点纹理
NV和ATI在这方面是完全的冤家
而且我的X550没一个格式能用的……
最终
我想出一个纯粹脱裤子放屁的方法
把一个32位浮点数分成4个8位“浮点”数
不过shader是不支持位运算的
可想而知最终结果有多大的误差
结果就是:


至此
我已经不知道该说什么好了
当初DX和opengl都不存在的时候
图形API没有标准
各家显卡都不同
结果最终造就了Voodoo的神话
但是3DFX不开放自己的api
扑街了
换DX和opengl接班
的确现在PC游戏用opengl的比较少了
但是这不等于没人用opengl
像NV和ATI这样各自搞小动作
还不说明白
只有从dos时代过来的经验丰富的程序员面对这些烂事才能从容应对
我现在不得不担心
20年后老一辈开发人员都下岗之后
会不会也出现个“程序员能力危机”呢?
作者: 明    时间: 2008-12-8 12:49
人材,人材,人材,
作者: binbin521    时间: 2008-12-8 12:50
gz的牛人真多
作者: cardex_sp    时间: 2008-12-8 12:53
程序员向来是长江后浪推前浪,楼主多虑了。
作者: fevaoctwh    时间: 2008-12-8 12:53
提示: 作者被禁止或删除 内容自动屏蔽
作者: lisir2    时间: 2008-12-8 13:31
贴作品出来才是正道,为什么别人开发的可以搞好,而你搞不好呢?
作者: daniel_k    时间: 2008-12-8 13:36
由于我被DX那5XXMB的sdk给震撼了
所以选择opengl
好吧
我承认是我自找的

知道原因了那还不快快用回D3D{biggrin:]
M$千秋万代,一统江湖!!
作者: oz01    时间: 2008-12-8 13:36
原帖由 lisir2 于 2008-12-8 13:31 发表
贴作品出来才是正道,为什么别人开发的可以搞好,而你搞不好呢?

帖作品出来那就是发恶意广告了
我又不是专业人员
搞不好有什么奇怪的
作者: sarahaaa    时间: 2008-12-8 13:37
提示: 作者被禁止或删除 内容自动屏蔽
作者: oz01    时间: 2008-12-8 13:38
原帖由 daniel_k 于 2008-12-8 13:36 发表

知道原因了那还不快快用回D3D{biggrin:]
M$千秋万代,一统江湖!!

DX教学全都是用VS
装VS也太麻烦了吧
opengl随便拽个IDE就能编译
甚至我可以把工程和ide都扔到U盘随身携带
作者: goodayoo    时间: 2008-12-8 13:39
现在的游戏几乎都是DX一统江湖了,还考虑用OpenGL来开发游戏?那是给开源的Linux用的。
作者: flymop    时间: 2008-12-8 13:47
这灰机,有雪风里JAM的味道
作者: oz01    时间: 2008-12-8 13:51
坚决不用DX
用DX就要用VS
用VS就要看到MAC风格的错误提示
我宁可用DEV C++
最起码方便
作者: 慕尼黑    时间: 2008-12-8 13:54
LZ不容易啊,被折腾的
作者: Xii    时间: 2008-12-8 13:55
牛贴! 顶一顶我也牛!!
作者: slice    时间: 2008-12-8 13:57
相信两家对DX支持上的一致性肯定好于OpenGL,但也别抱太大希望:p
作者: fish0406    时间: 2008-12-8 14:12
写2个程序

运行前先判断是什么卡


哈哈哈哈哈哈和哈哈哈哈哈哈哈哈哈
作者: iiiiuuuu    时间: 2008-12-8 14:16
解决办法很简单,根据显卡厂商分别使用不同的实现方法。

虽然这个办法很傻。{victory:]
作者: Elensar    时间: 2008-12-8 14:25
提示: 作者被禁止或删除 内容自动屏蔽
作者: oz01    时间: 2008-12-8 14:46
怎么什么地方都有认识我的人:sweatingbullets:
作者: guza    时间: 2008-12-8 16:10
楼主在开发什么呀,想不到游戏开发如此恐怖,我等只能望游兴叹……
作者: Sirlion    时间: 2008-12-8 16:28
第一次?
作者: wl00560    时间: 2008-12-8 16:43
强人,看不懂的路过……
作者: demonpumpkin    时间: 2008-12-8 17:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: everyoung    时间: 2008-12-8 18:10
做程序员就是要有不怕烦,不怕死的精神
还是用DX吧
另外,做游戏是靠烧钱的
作者: everyoung    时间: 2008-12-8 18:13
或者,你应该先针对一个卡编程,尽量做成适配器模式,然后再写另一种卡的适配器
作者: cxasuka    时间: 2008-12-8 18:42
OZ大大的苦水~~~~
作者: 18043010    时间: 2008-12-8 19:00
:thumbsup:
作者: clockup    时间: 2008-12-8 19:40
lz你是自己写底层吗?如果不是写底层这么折腾有必要吗?只要使用通用的接口就好了,至于显卡表现怎么样,na两家自会去料理,需要操什么心?
作者: clockup    时间: 2008-12-8 19:43
最好用Intel集显开发,那个能跑德这两家都不成问题。{lol:]
作者: liii007    时间: 2008-12-8 20:25
提示: 作者被禁止或删除 内容自动屏蔽
作者: mcs_xiaonan    时间: 2008-12-8 20:30
原帖由 oz01 于 2008-12-8 13:38 发表

DX教学全都是用VS
装VS也太麻烦了吧
opengl随便拽个IDE就能编译
甚至我可以把工程和ide都扔到U盘随身携带


现在的形势是如果lz连VS都嫌麻烦,就只能忍受用的越来越少的opengl了
作者: McLovin    时间: 2008-12-8 20:54
对于fp texture的支持,A,N本来就不同,即使你使用D3D也需要提前进行判断,支持哪种格式,是否支持filtering,blending之类的.

关于shadowmaps,a是支持dst的,至少在d3d里支持,ogl我很久没用了,也就没有琢磨过这个,我估计是在a自家的扩展里.
不过即使这样,a和n的dst也有些许不同.无论是d3d还是ogl都一样.

当然,ogl也有自身混乱的部分,arb的还好说,n,a自家的扩展还是少用为好.
作者: DEViANCE    时间: 2008-12-8 22:34
楼主很强,自主开发是够累的,还是游戏开发。。。更累{sweat:]
作者: boris_lee    时间: 2008-12-9 02:55
原帖由 oz01 于 2008-12-8 13:38 发表

DX教学全都是用VS
装VS也太麻烦了吧
opengl随便拽个IDE就能编译
甚至我可以把工程和ide都扔到U盘随身携带

VS 也可以扔到U盘随身携带的{blush:]

装在PE里{titter:]
作者: oz01    时间: 2008-12-9 09:04
原帖由 McLovin 于 2008-12-8 20:54 发表
对于fp texture的支持,A,N本来就不同,即使你使用D3D也需要提前进行判断,支持哪种格式,是否支持filtering,blending之类的.

关于shadowmaps,a是支持dst的,至少在d3d里支持,ogl我很久没用了,也就没有琢磨过这个,我估 ...

我提到的这些问题除了你说的扩展不通用以外
其他问题我都没找到任何相关文章
这才是我最头痛的地方




欢迎光临 POPPUR爱换 (https://we.poppur.com/) Powered by Discuz! X3.4