亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用自定義 QSurfaceFormat 時出現 PySide2 OpenGL 錯誤

使用自定義 QSurfaceFormat 時出現 PySide2 OpenGL 錯誤

莫回無 2023-06-06 16:35:18
我正在使用QSurfaceFormat明確定義OpenGL Core 配置文件并設置次要/主要版本。問題是,自定義表面格式的分配給我以下錯誤:Traceback (most recent call last):  File "/home/artem/PycharmProjects/PolyEdit3D/PolyEdit3D/Widgets/PlyViewport.py", line 22, in initializeGL    gl.glEnable(gl.GL_COLOR_BUFFER_BIT)  File "/home/artem/.local/lib/python3.7/site-packages/OpenGL/platform/baseplatform.py", line 415, in __call__    return self( *args, **named )  File "src/errorchecker.pyx", line 58, in OpenGL_accelerate.errorchecker._ErrorChecker.glCheckErrorOpenGL.error.GLError: GLError(    err = 1280,    description = b'invalid enumerant',    baseOperation = glEnable,    cArguments = (GL_COLOR_BUFFER_BIT,))Traceback (most recent call last):  File "/home/artem/PycharmProjects/PolyEdit3D/PolyEdit3D/Widgets/PlyViewport.py", line 69, in paintGL    gl.glDrawElements(gl.GL_TRIANGLES, 6, gl.GL_UNSIGNED_INT, ctypes.c_void_p(0))  File "src/latebind.pyx", line 39, in OpenGL_accelerate.latebind.LateBind.__call__  File "src/wrapper.pyx", line 318, in OpenGL_accelerate.wrapper.Wrapper.__call__  File "src/wrapper.pyx", line 311, in OpenGL_accelerate.wrapper.Wrapper.__call__  File "/home/artem/.local/lib/python3.7/site-packages/OpenGL/platform/baseplatform.py", line 415, in __call__    return self( *args, **named )  File "src/errorchecker.pyx", line 58, in OpenGL_accelerate.errorchecker._ErrorChecker.glCheckErrorOpenGL.error.GLError: GLError(    err = 1282,    description = b'invalid operation',    baseOperation = glDrawElements,    pyArgs = (        GL_TRIANGLES,        6,        GL_UNSIGNED_INT,        c_void_p(None),    ),    cArgs = (        GL_TRIANGLES,        6,        GL_UNSIGNED_INT,        c_void_p(None),    ),    cArguments = (        GL_TRIANGLES,        6,        GL_UNSIGNED_INT,        c_void_p(None),    ))正如您所看到的,還有gl.glEnable(gl.GL_COLOR_BUFFER_BIT)其他一些簡單的錯誤。沒有指定QSurfaceFormat一切都像一個魅力。
查看完整描述

1 回答

?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

GL_COLOR_BUFFER_BIT不是 的有效枚舉常量glEnable,但它是 的適當參數glClear。在通過以下方式設置清晰顏色后
調用:glClearglClearColor

class PlyViewportWidget(QtWidgets.QOpenGLWidget):

? ? # [...]


? ? def initializeGL(self):

? ? ? ??

? ? ? ? #gl.glEnable(gl.GL_COLOR_BUFFER_BIT) <---- DELETE

? ? ? ??

? ? ? ? gl.glClearColor(0.4, 0.4, 0.4, 1)


? ? ? ? gl.glClear(gl.GL_COLOR_BUFFER_BIT) # <---- ADD

您錯過了創建命名頂點數組對象的機會:

class PlyViewportWidget(QtWidgets.QOpenGLWidget):

? ? # [...]


? ? def initializeGL(self):

? ? ? ? # [...]


? ? ? ? self.vao = gl.glGenVertexArrays(1) # <---?

? ? ? ? gl.glBindVertexArray(self.vao)? ? ?# <---?


? ? ? ? self.vbo = gl.glGenBuffers(1)

? ? ? ? self.ebo = gl.glGenBuffers(1)


? ? ? ? gl.glBindBuffer(gl.GL_ARRAY_BUFFER, self.vbo)

? ? ? ? gl.glBufferData(gl.GL_ARRAY_BUFFER, vertices.nbytes, vertices, gl.GL_STATIC_DRAW)


? ? ? ? gl.glBindBuffer(gl.GL_ELEMENT_ARRAY_BUFFER, self.ebo)

? ? ? ? gl.glBufferData(gl.GL_ELEMENT_ARRAY_BUFFER, indices.nbytes, indices, gl.GL_STATIC_DRAW)


? ? ? ? gl.glEnableVertexAttribArray(0)

? ? ? ? gl.glVertexAttribPointer(0, 3, gl.GL_FLOAT, gl.GL_FALSE, 3 * ctypes.sizeof(ctypes.c_float), ctypes.c_void_p(0))


? ? ? ? gl.glBindBuffer(gl.GL_ARRAY_BUFFER, 0)

? ? ? ? gl.glBindVertexArray(0)


查看完整回答
反對 回復 2023-06-06
  • 1 回答
  • 0 關注
  • 262 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號