【发布时间】:2015-06-06 22:06:05
【问题描述】:
我收到的错误消息是:
ERROR: 0:5: error<#12>> Unexpected qualifier
ERROR: 0:5: error<#12> Syntax error: "in_transformation" parse error
ERROR: error<#273> 2 compilation errors. No code generated
这是我的绘图函数,我将转换矩阵解析到着色器中。我不确定这应该在这里,这应该在我在顶点数组中解析的初始化函数中吗?矩阵?
void Mesh3D::Draw()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Draw elements of each mesh in the vector
glm::mat4 matrix = matrixViewProjection*this->matrixModel;
int loc = glGetUniformLocation(program, "in_transformation");
glUniformMatrix4fv(loc, 1, GL_FALSE, glm::value_ptr(matrix));
for (int i = 0; i<nVectorGeometry; i++)
{
glBindVertexArray(vaos[i]);
glDrawElements(col->vectorGeometry[i].primitive
col->vectorGeometry[i].index_count,
GL_UNSIGNED_SHORT, col->vectorGeometry[i].indices);
}
glBindVertexArray(0);
glutSwapBuffers();
}
这是我的顶点着色器,因为我将它存储在头文件中 注意这一切都没有我在转换矩阵中解析,所以问题与我如何存储着色器无关
static std::string shaderVert = "#version 330\n"
"in vec3 in_coords;\n"
"in vec3 in_normals;\n"
"in vec4 in_colors; \n"//added by me
"in map4 in_transformation;\n"//added by me
"out vec3 vertex_normal;\n"
"out vec4 vertex_color;\n"
"void main(void) {\n"
"vertex_normal = in_normals;\n"
"vertex_color = in_colors;\n"//added by me
"gl_Position =in_transformation* vec4(in_coords, 1.0);\n"
"}\n";
谢谢,我不确定我是否正确设置了转换矩阵:/?
这是我的转换矩阵的格式:
static glm::mat4 matrix =
{ 1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f };
【问题讨论】:
标签: c++ parsing opengl matrix transformation