首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为照相机创建一个着色程序是正确的吗?

为照相机创建一个着色程序是正确的吗?
EN

Stack Overflow用户
提问于 2014-12-19 15:10:43
回答 1查看 827关注 0票数 1

我想在我的3D应用程序中为照相机对象创建一个单独的类/原型。

正如我所理解的,有一个Model-View矩阵,它被开发人员用来翻译/旋转/使用任何3D对象的其他仿射变换,这是添加到场景中的。

但是,我的相机不像网状的东西。Camera不需要颜色,所以不需要片段着色器(当然,如果你不想把相机想象成LINES,并在不同的相机之间切换,比如),那么我真正需要的相机是什么呢?

  • 在三维向量( x,y,z)中的位置
  • mat4矩阵,它描述位置和一些附加的矢量分量,我将在顶点着色器中使用,它将用于摄像机的位置转换。
  • 一些用于移动摄像机的控件(我不想描述有关它的大细节,但例如,假设我们只使用键盘键来移动和旋转它)

我的问题是..。如果我们的3D场景的视口是用Model-View矩阵表示的,那么任何对象都是通过仿射变换来处理的。为摄像机对象创建特定的着色器程序是正确的,还是为场景对象定义这样的着色程序,并且仅仅在某些draw方法/函数中将相机位置转换为Model-View矩阵,这在Scene对象的属性中是正确的?

我在我的项目中使用WebGL库,但是我认为一些OpenGL开发人员也可能回答这样的问题,因为在这两个库中这些东西是相似的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-19 19:18:37

为照相机对象创建特定的着色器程序是否正确?

不,因为OpenGL里没有照相机。事实上,在OpenGL中甚至没有一个场景。OpenGL是一个非常简单的绘图API。OpenGL所做的就是绘制点、线或三角形到像素帧缓冲区,一次画一个点、一行或三角形,一旦绘制出来,OpenGL就已经忘记了。

着色器是控制点、线或三角形如何在屏幕上变成像素的小程序。着色器不“控制”场景对象。为什么?因为OpenGL中没有场景,OpenGL中也没有场景对象。

没有摄像头。你能想到的相机(但不是)是模型视图中的一些子转换,它以某种方式移动屏幕上的几何图形,就好像是移动相机的结果一样。

请注意,这同样适用于WebGL和OpenGL。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27568761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档