我的胶合130码在我较为现代的硬件(ATI 5850)上取得了适当进展,而相同的代码则对配备INVIDIA卡的旧膝上型计算机完全罚款。 这里的情况是,我所使用的情况没有变化。 发生的情况是病媒:沉积、col和_对新硬件的适当约束。 似乎我被迫在新硬件上使用更新的冰川(330)。
这里是vert曲的冰川法。 它非常简单和基本。
#version 130
uniform mat4 projectionMatrix;
uniform mat4 viewMatrix;
uniform mat4 modelMatrix;
uniform mat4 normalMatrix;
in vec4 in_position;
in vec4 in_colour;
in vec3 in_normal;
out vec4 pass_colour;
smooth out vec3 vNormal;
void main()
{
gl_Position = projectionMatrix * viewMatrix * modelMatrix * in_position;
vec4 vRes = normalMatrix*vec4(in_normal, 0.0);
vNormal = vRes.xyz;
pass_colour = in_colour;
}
实际情况是:
in vec4 in_position;
in vec4 in_colour;
in vec3 in_normal;
不受约束或不完全约束。 这些价值观被奇地扭曲。 从我的测试来看,所有其他工作都是适当的。 将版本改为330,使用地点关键词确定问题,但这也使该守则与开放式的较老的趋同不相符合。
此处是用于具体说明这些地点的准则的样本。
该方案:
glBindAttribLocation(LD_standard_program, 0, "in_position");
glBindAttribLocation(LD_standard_program, 1, "in_colour");
glBindAttribLocation(LD_standard_program, 2, "in_normal");
以后的数据本身:
--- code to buffer vertex data
glEnableVertexAttribArray(0);
glVertexAttribPointer((GLuint) 0, 4, GL_FLOAT, GL_FALSE, 0, 0);
--- code to buffer colour data
glEnableVertexAttribArray(1);
glVertexAttribPointer((GLuint) 1, 4, GL_FLOAT, GL_FALSE, 0, 0);
--- code to buffer normal data
glEnableVertexAttribArray(2);
glVertexAttribPointer((GLuint) 2, 3, GL_FLOAT, GL_FALSE, 0, 0);
我的问题是:是否应该落后? 我开始担心的是,我不得不书写一版的开张,使我的节目用不同的硬件进行。 由于这些属性具有很强的基本功能,我怀疑这在《公约》的实施中是一个ug。