Fra*_*act -1 3d graphics opengl-es glsl blender
是否可以将我的3D模型导出或转换为GLSL ES 2.0?对于像Blender/3DS MAX/Maya这样创建GLSL ES 2.0代码的编辑程序,是否有任何转换器或任何导出工具/插件?
我想在上面提到的任何编辑器中方便地创建我的模型,然后我想将它们导出/转换为GLSL ES 2.0.
我已经有一个显示着色器的模板WebGL代码.我想用转换器或导出工具自动创建的GLSL ES代码替换片段着色器和顶点着色器部件.
我想做这样的事情(但对于GLSL ES 2.0): Blender到GLSL
你在这里比较苹果和汽车.OpenGL是一个绘图API,GLSL是一种用于实现着色器代码的编程语言.
3D模型既不是那样的.唯一的问题是"如何将我的3D模型转换为OpanGL?" 没有意义.
可能吗?
不,因为这不是GLSL的目的
选择模型文件格式(最好是实现读取解析器很简单)实现解析器,填写适当的数据结构并将它们提供到OpenGL的正确部分,进行正确的调用以绘制它们.
OpenGL本身不处理模型,场景甚至文件.GLSL甚至不是文件格式,它是一种语言.
我从OBJ或STL文件开始.它们相当容易阅读,解释和匹配OpenGL使用的原始类型.
可能最难阅读的格式是.blend文件; 有效的.blend文件是Blender进程内存映像的转储.它需要一个功能齐全的Blender(或与它非常相似的东西)来理解.blend文件.
请仔细阅读您链接的导出器脚本的内容:它采用对象材质设置(不是模型本身)并生成GLSL代码,在正确的框架中使用时(即适当的统一和属性名称,矩阵设置等) .)将导致尽可能接近类似材料设置的着色操作.该脚本不会导出模型!
您询问了有关导出3D模型的信息.这将是模型的网格,以及将其置于世界中的属性.材料不是存储在OBJ或STL文件中的内容.它们是纹理,是的,着色器.但它们完全独立于模型数据本身.只要模型提供了所有必需的顶点属性以使这些材料起作用,就可以在多个模型上使用相同的材质设置,或者自由地交换模型的材质(纹理和着色器).
你甚至了解着色器的作用吗?如果没有,这里是一个简短的概要:你有顶点属性数据(在缓冲区中).这些索引属性将提交给OpenGL.使用对glDrawElements或glDrawArrays的调用,属性被解释为基元(点,线或三角形(或旧OpenGL版本上的四边形)).然后对每个基元进行多次转换.
强制性:第一步是顶点着色器,其职责是确定其在视口中的最终位置.
可选:在顶点着色顶点之后,由顶点形成的图元经历细分着色.Tesselation用于细化几何体,例如向地形添加细节或使曲面更平滑.
可选:接下来是几何着色,它可以用(小)顶点数替换单个顶点.几何着色器甚至可以更改基本类型.因此,单个点可以替换为三角形(例如,用于渲染粒子系统).
强制性:最后一步是对基元进行片段着色.在确定视口中的图元位置之后,它覆盖的每个像素在一个或多个片段中处理.片段着色器是一个程序,用于确定目标帧缓冲区中的最终颜色和半透明度.
每个着色步骤由用户定义的程序控制.正是这些程序,它们被称为着色器,用GLSL编写.不是几何,没有模型.程式!那个非常简单的程序.它们不会从零开始生成几何体,它们总是处理传递给OpenGL的现有几何体.
着色器不用于定义或存储模型.他们只是在渲染时修改它们.
| 归档时间: |
|
| 查看次数: |
1307 次 |
| 最近记录: |