作者StubbornLin (Victor)
看板GameDesign
标题Re: [程式] OpenGL 用3D Render 2D
时间Sun Jun 25 17:01:30 2006
※ 引述《StubbornLin (Victor)》之铭言:
: ※ 引述《StubbornLin (Victor)》之铭言:
: : 图片:
: : http://www.kinmen.info/vic/image/opengl_2d_engine.jpg
: : 程式:
: : http://www.kinmen.info/vic/files/opengl_2d_engine.zip
: : 做差不多了,用3D来Render 2D真的轻松太多了
: : 想起我以前用Direct Draw一个一个Pixel去做Alpha blending真的会吐血
: : 现在只要轻松打几行程式它的Alpha blending就出来了
: : 而且,又有Linear可以用,在放大缩小时效果还是很棒
: : 不过用Linear有个缺点,就是图的边缘如果很复杂,放大缩小时会有白边出现
: : 但是,因为以图通常四周都是整个全透明或半透明来思考的话
: : 其实这样的问题没什麽大碍
: : 等我把这个东西完成後,有空的话我来写几篇OpenGL 3D 拟 2D经验的文章
: : 好来抛砖引玉,让真正的高手出来写文章,不然这个版都没有什麽人气
: 我刚刚用我的NB试了一下= ="
: 果然是这样....
: NB用的是显示晶片,我在想
: 可能是某种功能显示晶片不支援才会这样
我发现原因了
原因出在两张图的长宽都不是2的次方
改成2的次方後就OK了
较旧的显示卡或晶片好像都不支援非2次方的贴图= ="
这是为什麽?
还有,因为旧显示卡的使用者还是很多
所以为了能够让更多的使用者也能够玩
必需修改成能让旧的晶片也能跑
因此要修改这引擎= ="
请问应该用什麽方案来解决呢?
我目前想到的方案,是将非2次方的图片
切割成几张2次方的图片,然後在材质贴图时组合起来
不知道有没有更好的方式可以提出来
除了贴图的问题,我还发现在旧晶片有种问题
那就是,GL_QUADS的四个点的颜色
当图片的最上边,超过画面时,图片会变暗
不知道为什麽会这样= ="
然後当我改成两张三角形去拼出一个矩形时这个问题好像就不见了
还有一个问题也很令我头痛,就是撕裂的问题
因为Windows为了要全萤幕所以是自己建立的
而更新画面放在WinMain的回圈里,更新时如果没有跟垂直同步那一刻进行
就会产生撕裂,因为以前硬体都帮我处理好= ="
所以我不知道要怎样解决,谁来告诉我该怎麽做 囧rz
看来= ="
要把2D引擎写成旧硬体也能跑还有得奋战 囧rz
--
VICTOR工作室 |
PTT游戏设计版隆重开幕!
|
不管是新手老手,程式美工音乐企划....
URL :
http://www.kinmen.info/vic/ |
都欢迎来游戏设计版参与讨论 XD
|
战略高手>
C/C++ |
GameTopics>
Visual Basic 6.0 |
GameDesign
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.116.66.105
1F:→ hexen2:直接用绘图软体改成2的次方就好了XD 06/25 17:54
2F:→ StubbornLin:= =|| 这样是可以没错啦... 但.... 06/25 19:04
3F:→ StubbornLin:档案的大小 和记忆体的空间 都平白地牺牲了 囧rz 06/25 19:04
4F:推 barroslee:反正 千万不要用切割图片那方法 转换贴图很浪费效能 06/25 19:29
5F:推 StubbornLin:那要用什麽方法? 囧rz 06/25 19:32
6F:推 barroslee:能用 Non-Power-of-Two 就用,不能就直接改图 06/25 19:35
7F:推 StubbornLin:可是要怎样知道有没有Non-Power-of-Two = = 06/25 19:38
8F:→ StubbornLin:还有 改图该怎麽改? 读图的时候补足power of 2吗? 06/25 19:40
9F:推 barroslee:glGetString(GL_EXTENSIONS); 06/25 19:42
10F:→ barroslee:改图是说:一楼毁灭巫师大大说的那样 06/25 19:43
11F:推 StubbornLin:囧rz.... 真的没路可走了吗? 可怜的空间... 06/25 19:47