PyQt içinde çalışan temel bir gölgelendirici program alamıyorum. Bunun en azından shader kodunu doğru bir şekilde derlemesi gerektiğini düşünüyorum (burada uzman değilim) ama addShaderFromSourceFile()
denediğim şey her zaman yanlıştır. Gölgelendirici program günlüğü her zaman boştur.PyQt içinde derleme gölgelendiricileri
Ubuntu 12.04'deyim ve GLSL shader programlarını C++ içinde derleyip çalıştırabilirim. Yani bunun bir sistem sorunu olduğunu düşünmüyorum.
Dosya shader.vert
void main(void)
{
gl_Position = ftransform();
}
Dosya shader.frag
void main(void)
{
gl_FragColor = vec4(1.0,0.0,0.0,1.0);
}
Dosya test_shaders.py
from OpenGL.GL import *
from OpenGL.GLU import *
from PyQt4 import QtCore, QtGui
from PyQt4.QtOpenGL import *
class ExampleQGLWidget(QGLWidget):
def __init__(self, parent):
QGLWidget.__init__(self, parent)
self.shaderProgram = QGLShaderProgram()
print self.shaderProgram.addShaderFromSourceFile(QGLShader.Vertex, "shader.vert")
print self.shaderProgram.addShaderFromSourceFile(QGLShader.Fragment, "shader.frag")
print self.shaderProgram.log()
self.shaderProgram.link()
glViewport(0,0, 640, 480)
def paintGL(self):
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
self.shaderProgram.bind()
def resizeGL(self, w, h):
glViewport(0, 0, w, h)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
def initializeGL(self):
glClearColor(0.0, 0.0, 0.0, 1.0)
glClearDepth(1.0)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
class TestContainer(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
widget = ExampleQGLWidget(self)
self.setCentralWidget(widget)
if __name__ == '__main__':
app = QtGui.QApplication(['Shader Example'])
window = TestContainer()
window.show()
app.exec_()
Çok teşekkürler! – YXD