为清楚起见,我从我的问题开始:
是否可以使用(在着色器代码中)我在RenderMonkey 1.82中的(OpenGL)流映射中为 TEXCOORD用法设置的自定义属性名称或我必须使用gl_MultiTexCoord0吗? (这个问题可能也适用于 NORMAL用法,即自定义名称或 gl_Normal )
背景:
使用RenderMonkey版本1.82。 我已成功使用流映射来映射一般顶点属性“position”(也许是“normal”),但纹理坐标似乎没有正确转发。 对于着色器代码,我使用#version 330和GLSL中的“in”限定符,这应该没问题,因为RM不会自己编译着色器(OpenGL驱动程序)。
我已经尝试了.obj和.3ds文件(从blender导出),并且在检查wavefront .obj文件时,所有纹理坐标信息都存在,以及顶点位置和法线。
如果不可能,则流映射被破坏,并且在流映射编辑器中命名变量没有意义(除了顶点位置流,它有效),因为必须使用内置变量反正。
更新: 如果使用已弃用的内置变量,则必须在着色器中使用兼容模式,例如
#version 330 compatibility
out vec2 vTexCoord;
并且,在主要功能中:
vTexCoord = vec2(gl_MultiTexCoord0);
(现在我也不确定法线的流映射。一旦我得到纹理坐标,我就遇到了正常的问题,不得不恢复到gl_Normal。)
这是一个工作解决方案的图片,但内置变量(是的,图片中的注释texcoord变量与流映射对话框中的名称不同,但是当我使用时它具有相同的名称试图使用它,所以没关系。):
答案 0 :(得分:0)
您可以尝试使用通用顶点的属性,请参阅http://open.gl,这是一个很棒的教程;) (但我认为这意味着你必须重写代码来手动处理转换......)
答案 1 :(得分:0)
application/json
这是RM 1.82的有效解决方案