我想在我的3D应用程序中为照相机对象创建一个单独的类/原型。
正如我所理解的,有一个Model-View矩阵,它被开发人员用来翻译/旋转/使用任何3D对象的其他仿射变换,这是添加到场景中的。
但是,我的相机不像网状的东西。Camera不需要颜色,所以不需要片段着色器(当然,如果你不想把相机想象成LINES,并在不同的相机之间切换,比如),那么我真正需要的相机是什么呢?
我的问题是..。如果我们的3D场景的视口是用Model-View矩阵表示的,那么任何对象都是通过仿射变换来处理的。为摄像机对象创建特定的着色器程序是正确的,还是为场景对象定义这样的着色程序,并且仅仅在某些draw方法/函数中将相机位置转换为Model-View矩阵,这在Scene对象的属性中是正确的?
我在我的项目中使用WebGL库,但是我认为一些OpenGL开发人员也可能回答这样的问题,因为在这两个库中这些东西是相似的。
发布于 2014-12-19 19:18:37
为照相机对象创建特定的着色器程序是否正确?
不,因为OpenGL里没有照相机。事实上,在OpenGL中甚至没有一个场景。OpenGL是一个非常简单的绘图API。OpenGL所做的就是绘制点、线或三角形到像素帧缓冲区,一次画一个点、一行或三角形,一旦绘制出来,OpenGL就已经忘记了。
着色器是控制点、线或三角形如何在屏幕上变成像素的小程序。着色器不“控制”场景对象。为什么?因为OpenGL中没有场景,OpenGL中也没有场景对象。
没有摄像头。你能想到的相机(但不是)是模型视图中的一些子转换,它以某种方式移动屏幕上的几何图形,就好像是移动相机的结果一样。
请注意,这同样适用于WebGL和OpenGL。
https://stackoverflow.com/questions/27568761
复制相似问题