Ich versuche, ein Projekt unter Mac OS X, das unter Windows funktioniert. Das Projekt verwendet die OpenGL- und PyQt-Bibliotheken. Es scheint ein Problem mit der Verwendung der OpenGL-Bibliothek zu geben.OpenGL: PyCharm unerwartet beendet auf Mac
Ich habe eine OpenGL-Demo einer Helix heruntergeladen, die funktioniert.
print("OpenGL: " + str(glGetString(GL_VERSION)))
kehrt OpenGL: b'2.1 NVIDIA-10.0.51 310.90.10.05b12'
Wenn ich versuche, das andere Projekt auszuführen, beendet PyCharm unerwartet und ich folgendes:
Traceback (most recent call last):
File "/CS 410/Agile-Development-Project-master2/package/ui/widgets/gamewidget.py", line 177, in initializeGL
glPrimitiveRestartIndex(self.restart)
File "/anaconda/lib/python3.5/site-packages/OpenGL/platform/baseplatform.py", line 402, in __call__
return self(*args, **named)
File "errorchecker.pyx", line 53, in OpenGL_accelerate.errorchecker._ErrorChecker.glCheckError (src/errorchecker.c:1218)
OpenGL.error.GLError: GLError(
err = 1282,
description = b'invalid operation',
baseOperation = glPrimitiveRestartIndex,
cArguments = (4294967295,)
)
mainwi ndow.py
from PyQt5 import QtOpenGL
from PyQt5.QtWidgets import QMainWindow, QStackedWidget
from package.ui.widgets import GameWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
glformat = QtOpenGL.QGLFormat()
glformat.setVersion(3, 1)
glformat.setProfile(QtOpenGL.QGLFormat.CoreProfile)
self.setWindowTitle('Game name here')
#self.stacked_widget = QStackedWidget(GameWidget())
self.setCentralWidget(GameWidget(glformat))
init in gamewidget.py
def __init__(self, *args, n=10, **kwargs):
Einstellung Version 3.2: glGetString (GL_VERSION) gibt einen 3.3 Kontext
neue Fehler (Python beendet noch unerwartet) :
Traceback (most recent call last):
File "/Users/daniel/WSCU/Spring 2017/CS 410/Agile-Development-Project-mastercurrent/package/ui/widgets/gamewidget.py", line 183, in initializeGL
self.initializeCube()
File "/Users/daniel/WSCU/Spring 2017/CS 410/Agile-Development-Project-mastercurrent/package/ui/widgets/gamewidget.py", line 142, in initializeCube
program = self.loadShaders()
File "/Users/daniel/WSCU/Spring 2017/CS 410/Agile-Development-Project-mastercurrent/package/ui/widgets/gamewidget.py", line 227, in loadShaders
raise RuntimeError(glGetShaderInfoLog(fs))
RuntimeError: b"ERROR: 0:6: Use of undeclared identifier 'gl_FragColor'\n"
EDIT:
def initializeTimer(self):
self.pbar = QProgressBar(self)
self.pbar.setGeometry(30, 40, 200, 25)
self.timer = QBasicTimer()
self.timer.start(1200, self)
self.step = 100
self.pbar.setValue(self.step)
self.btn = QPushButton("Time is: " + str(int(self.step * 1.2)), self)
self.btn.setStyleSheet("background-color: black; color: red;")
self.btn.move(500, 10)
self.show()
def timerEvent(self, e):
if self.step <= 0:
self.timer.stop()
return
self.step -= 1
self.score += 1
# print(self.score)
self.btn.setText("Time is: " + str(int(self.step * 1.2)))
self.scoreLabel.setText("Score: " + str(int(self.score)))
self.pbar.setValue(self.step)
self.pbar.setVisible(True)
print(self.btn.text())
print(self.pbar.text())
def makeScoreLabel(self):
self.scoreLabel = QPushButton("Score: " + str(int(self.score)), self)
self.scoreLabel.setStyleSheet("background-color: white; color: red;")
self.scoreLabel.move(200, 10)
Ich bin verwirrt, wo man das hinstellt. Ich habe oben einen Link zu dem Projekt hinzugefügt, an dem ich gerade arbeite. Ich habe versucht, es Hauptwindow.py und fügen Sie es dem GameWidget() in der letzten Zeile, Zeile 11, aber ich hatte kein Glück. Ist das der falsche Ort? – hungryHippo
Werfen Sie einen Blick auf meine Bearbeitung. – Vallentin
Ich habe Ihren Code hinzugefügt, bekomme aber immer noch den gleichen genauen Fehler. Siehe meine Bearbeitung für die Änderungen, die ich vorgenommen habe. Habe ich Glformat an der falschen Stelle gemacht? – hungryHippo