作者:xwu9052591 | 来源:互联网 | 2022-11-30 12:28
1> Rabbid76..:
你的着色器甚至没有编译.当您声明矩阵制服时,则使用名称model2D
,view2D
并且projection2D
:
uniform mat4 view2D;
uniform mat4 model2D;
uniform mat4 projection2D;
但是当你使用矩阵时,你使用名称view
,model
并projection
:
gl_Position = projection * view * model * vec4(vertex.xy, 0.0, 1.0);
我建议检查着色器对象是否已成功编译以及程序对象是否成功链接.
如果可以通过glGetShaderiv
和参数检查着色器的编译成功GL_COMPILE_STATUS
.
例如
GLuint shaderObj = .... ;
glCompileShader( shaderObj );
GLint status = GL_TRUE;
glGetShaderiv( shaderObj, GL_COMPILE_STATUS, &status );
if ( status == GL_FALSE )
{
GLint logLen;
glGetShaderiv( shaderObj, GL_INFO_LOG_LENGTH, &logLen );
std::vectorlog( logLen );
GLsizei written;
glGetShaderInfoLog( shaderObj, logLen, &written, log.data() );
std::cout <<"compile error:" <
如果程序的链接成功,则可以通过glGetProgramiv
参数进行检查GL_LINK_STATUS
.
例如
GLuint progObj = ....;
glLinkProgram( progObj );
GLint status = GL_TRUE;
glGetProgramiv( progObj, GL_LINK_STATUS, &status );
if ( status == GL_FALSE )
{
GLint logLen;
glGetProgramiv( progObj, GL_INFO_LOG_LENGTH, &logLen );
std::vectorlog( logLen );
GLsizei written;
glGetProgramInfoLog( progObj, logLen, &written, log.data() );
std::cout <<"link error:" <