简而言之:众所周知,opengl 在屏幕上绘制了很多三角形。
我想知道的:
如果 opengl 绘制三角形,它必须知道,哪个三角形属于屏幕上的哪个像素,对吧?
我也可以得到这些信息吗?例如,在绘制后调用一个函数(如 gl_retrieve_object_map()
或类似的东西),我可以知道哪个像素显示哪个三角形?
这就像为每个像素做采摘
我在想一个二维数组告诉我三角形索引或其他什么:
例如在 10x10 像素的屏幕上:
0 0 1 1 1 1 1 0 0 0
0 0 0 1 1 1 1 0 2 0
0 0 0 0 1 1 1 2 2 0
0 0 0 0 0 1 1 2 2 0
0 0 0 0 0 2 1 2 2 0
0 0 0 0 2 2 2 2 2 0
0 0 0 2 2 2 2 2 2 0
0 0 2 2 2 2 2 2 2 0
0 2 2 2 2 2 2 2 2 0
0 0 0 0 0 0 0 0 0 0
对于像这样的图像:
___
\ |
\ |
\|/|
/ |
/ |
/ |
/____|
有什么我可以用的吗?
最佳答案
OpenGL 在绘制某些东西后实际上并没有这些信息。 OpenGL 有几个缓冲区,包括(除其他外)颜色缓冲区和深度缓冲区,但它没有一个缓冲区来保存每个绘制图元的索引。
但这并不意味着你运气不好。我见过应用程序做的一件事是删除所有照明效果并为每个对象赋予独特的颜色。然后,它将场景渲染到屏幕外缓冲区。然后那个屏幕外缓冲区就有你想要的信息。
关于c++ - "objects map"在 opengl 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27680937/