渲染流水线的光栅化问题

时间:2022-11-04 10:22:31
我想试着重写3D渲染流水线,但是最后的光栅化要怎么做呢?
我能想出的方案是
1,使用Direct3D创建设备,然后锁住backbuffer,直接进行像素填充。不过划线什么的函数都要自己写了。
2,使用Direct3D创建设备,然后锁住backbuffer,获取HDC,用GDI画。但是看了下帮助,要成功获取HDC限制颇多,尤其是表面格式不能支持alpha通道最老火。
3,画到DirectDraw的surface上。
4,不用DirectX,就用GDI画算了。
应该有很棒的方法才是吧,大家指教一下吧,谢谢了。

10 个解决方案

#1


用gdi+做好了,各种特效都比较容易些。

#2


引用 1 楼 hbdycnm 的回复:
用gdi+做好了,各种特效都比较容易些。

你是指不使用DirectX吗?

#3


用DirectDraw画吧,D3D和OpenGl最后都是用DirectDraw把图像画到屏幕上的。

#4


引用 3 楼 Silenker 的回复:
用DirectDraw画吧,D3D和OpenGl最后都是用DirectDraw把图像画到屏幕上的。

用GDI画,还是自己填像素呢?

#5


抱歉,这个我也不知道,但是猜想应该是自己操作像素,使用GDI的话,可能造成额外的性能损失。

#6


强烈推荐用DirectDraw,因为它的速度比GDI快多了,就像《3D游戏编程大师技巧》的作者所做的。

#7


引用 6 楼 glacier3d 的回复:
强烈推荐用DirectDraw,因为它的速度比GDI快多了,就像《3D游戏编程大师技巧》的作者所做的。

倒,他建立了一个库来做的,要完成那个库还要看他写的windows那本才行啊。
用GDI+会不会快点?

#8


引用:
倒,他建立了一个库来做的,要完成那个库还要看他写的windows那本才行啊。 
用GDI+会不会快点?
================================
那你就先把光栅化部分封装成GDI的试试,如果速度实在忍受不了,再换成用DDraw写的bai

记得,《3D游戏。。》里作者是用了个库,但那只封装了一些线、多边形等的光栅化函数,内容并不多,而且自己不用的也不用去写。而真正内容多的,还是用软件算法来模拟整个3D渲染管道。

#9


引用 8 楼 glacier3d 的回复:
引用: 
倒,他建立了一个库来做的,要完成那个库还要看他写的windows那本才行啊。 
用GDI+会不会快点? 
================================ 
那你就先把光栅化部分封装成GDI的试试,如果速度实在忍受不了,再换成用DDraw写的bai 

记得,《3D游戏。。》里作者是用了个库,但那只封装了一些线、多边形等的光栅化函数,内容并不多,而且自己不用的也不用去写。而真正内容多的,还是用软件算法来模拟整个3D渲染管道。

而真正内容多的,还是用软件算法来模拟整个3D渲染管道。
用软件算法模拟是什么意思啊?

#10


引用 9 楼 rikpan 的回复:
引用 8 楼 glacier3d 的回复:
引用: 
倒,他建立了一个库来做的,要完成那个库还要看他写的windows那本才行啊。 
用GDI+会不会快点? 
================================ 
那你就先把光栅化部分封装成GDI的试试,如果速度实在忍受不了,再换成用DDraw写的bai 

记得,《3D游戏。。》里作者是用了个库,但那只封装了一些线、多边形等的光栅化函数,内容并不多,而且自己不用的也不用去写。而真正内容多的,还是用软件算法…


就是原来三维管道的实现可以通过D3D、OpenGL等API来实现,现在相当于写一遍类似于那些API的函数

#1


用gdi+做好了,各种特效都比较容易些。

#2


引用 1 楼 hbdycnm 的回复:
用gdi+做好了,各种特效都比较容易些。

你是指不使用DirectX吗?

#3


用DirectDraw画吧,D3D和OpenGl最后都是用DirectDraw把图像画到屏幕上的。

#4


引用 3 楼 Silenker 的回复:
用DirectDraw画吧,D3D和OpenGl最后都是用DirectDraw把图像画到屏幕上的。

用GDI画,还是自己填像素呢?

#5


抱歉,这个我也不知道,但是猜想应该是自己操作像素,使用GDI的话,可能造成额外的性能损失。

#6


强烈推荐用DirectDraw,因为它的速度比GDI快多了,就像《3D游戏编程大师技巧》的作者所做的。

#7


引用 6 楼 glacier3d 的回复:
强烈推荐用DirectDraw,因为它的速度比GDI快多了,就像《3D游戏编程大师技巧》的作者所做的。

倒,他建立了一个库来做的,要完成那个库还要看他写的windows那本才行啊。
用GDI+会不会快点?

#8


引用:
倒,他建立了一个库来做的,要完成那个库还要看他写的windows那本才行啊。 
用GDI+会不会快点?
================================
那你就先把光栅化部分封装成GDI的试试,如果速度实在忍受不了,再换成用DDraw写的bai

记得,《3D游戏。。》里作者是用了个库,但那只封装了一些线、多边形等的光栅化函数,内容并不多,而且自己不用的也不用去写。而真正内容多的,还是用软件算法来模拟整个3D渲染管道。

#9


引用 8 楼 glacier3d 的回复:
引用: 
倒,他建立了一个库来做的,要完成那个库还要看他写的windows那本才行啊。 
用GDI+会不会快点? 
================================ 
那你就先把光栅化部分封装成GDI的试试,如果速度实在忍受不了,再换成用DDraw写的bai 

记得,《3D游戏。。》里作者是用了个库,但那只封装了一些线、多边形等的光栅化函数,内容并不多,而且自己不用的也不用去写。而真正内容多的,还是用软件算法来模拟整个3D渲染管道。

而真正内容多的,还是用软件算法来模拟整个3D渲染管道。
用软件算法模拟是什么意思啊?

#10


引用 9 楼 rikpan 的回复:
引用 8 楼 glacier3d 的回复:
引用: 
倒,他建立了一个库来做的,要完成那个库还要看他写的windows那本才行啊。 
用GDI+会不会快点? 
================================ 
那你就先把光栅化部分封装成GDI的试试,如果速度实在忍受不了,再换成用DDraw写的bai 

记得,《3D游戏。。》里作者是用了个库,但那只封装了一些线、多边形等的光栅化函数,内容并不多,而且自己不用的也不用去写。而真正内容多的,还是用软件算法…


就是原来三维管道的实现可以通过D3D、OpenGL等API来实现,现在相当于写一遍类似于那些API的函数