2011-07-15 16 views
10

为清楚起见,我开始与我的问题:RenderMonkey在GLSL的TEXCOORD流映射中有错误吗?

是否有可能使用(在着色器代码)的自定义属性命名我为TEXCOORD使用在(OpenGL的)流映射在RenderMonkey中设置1.82还是我必须使用gl_MultiTexCoord0?

使用RenderMonkey的版本1.82:

背景(问题可能为正常使用过,即自定义名称或gl_Normal有效)。 我已经成功地使用流映射来映射常规顶点属性“位置”(也许是“普通”),但纹理坐标似乎没有正确转发。 对于着色器代码,我使用#version 330和GLSL中的“in”限定符,这应该是确定的,因为RM不会自己编译着色器(OpenGL驱动程序)。

我已经尝试了.obj和.3ds文件(从blender导出),并且在检查波前.obj文件时,所有纹理坐标信息以及顶点位置和法线。

如果不可能,流映射被打破,并且在流映射编辑器中命名变量没有意义(除了顶点位置流有效),因为必须使用内置的无论如何变量。

更新: 如果使用过时的内置变量,一个具有着色器如

#version 330 compatibility 
out vec2 vTexCoord; 

使用兼容模式,并在主要功能:

vTexCoord = vec2(gl_MultiTexCoord0); 

(现在我我不知道法线的流映射,只要我的纹理坐标正常工作,我就有正常的问题,不得不恢复到gl_Normal。)

这里是工作解决方案的图片,但内置变量(是的,图片中的注释texcoord变量没有与流映射对话框中的名称相同,但是当我尝试使用它,所以没关系):Stream mapping bypassed with built in variables

+1

我没有一个工作解决方案想你的问题,但我可以建议一个多平台的替代品,ShaderMaker:http://cg.in.tu-clausthal.de/teaching/shader_maker/index.shtml – appas

+0

谢谢你的建议。我没有评估ShaderMaker,但它似乎是针对固定管道。显然还有另一个名为Lumina的项目,它也可能是一种替代方案。 – Deorbit

+0

可以渲染猴子支持3.30着色器吗?我认为它仅适用于OpenGL 2.1功能... –

回答

0

您可以尝试使用通用顶点的属性,看http://open.gl,这是一个伟大的教程;) (但我认为这意味着你必须重写代码手册。办理转换...)

0
#version 330 

layout(location = 0) in vec3 bla_bla_bla_Vertex; 
layout(location = 2) in vec3 bla_bla_bla_Normal; 
layout(location = 8) in vec3 bla_bla_bla_TexCoord0; 

这是RM 1.82