我正在使用openGL 3.1并使用QGL函数进行编程.我无法将统一的vec4 mycolor传递给片段着色器我使用以下命令初始化我的程序:
m_program = new QOpenGLShaderProgram(this);
m_program->addShaderFromSourceCode(QOpenGLShader::Vertex, vertexShaderSource);
m_program->addShaderFromSourceCode(QOpenGLShader::Fragment, fragmentShaderSource);
m_program->link();
m_posAttr = m_program->attributeLocation("posAttr");
m_mycolor = m_program->uniformLocation("mycolor");
m_matrixUniform = m_program->uniformLocation("matrix");
Run Code Online (Sandbox Code Playgroud)
然后我尝试发送颜色
GLfloat color[] = {
0.0f, 1.0f, 0.0f, 1.0f };
glUniform4fv(m_mycolor, 4, color);
Run Code Online (Sandbox Code Playgroud)
我的片段着色器是:
static const char *fragmentShaderSource =
"uniform vec4 mycolor;\n"
"void main() {\n"
" gl_FragColor = mycolor;\n"
"}\n";
Run Code Online (Sandbox Code Playgroud)
我什么也没看到
我在该行中遇到最大递归深度错误if hasattr(self, '_ubuffer')。有人可以看到我在做什么错吗?该函数的完整代码为:
def __getattr__(self, name):
if hasattr(self, '_ubuffer'):
buffer = object.__getattribute__(self,'_ubuffer')
if name in buffer.dtype.names:
return buffer.data[name]
return object.__getattribute__(self,name)
Run Code Online (Sandbox Code Playgroud) 如何在qt opengl中获取视口的大小(以像素为单位)并将其转换为Vec2f?我的着色器需要它。
我知道 getWindowSize()。