python - 使用 python opengl (PyOpenGL) 创建几何着色器失败
问题描述
我想使用 glCreateShader(GL_GEOMETRY_SHADER) 创建geometry_shader,但出现错误。
Traceback (most recent call last):
File "test.py", line 9, in <module>
geometry_shader = glCreateShader(GL_GEOMETRY_SHADER)
File "errorchecker.pyx", line 53, in OpenGL_accelerate.errorchecker._ErrorChecker.glCheckError (src/errorchecker.c:1218)
OpenGL.error.GLError: GLError(
err = 1280,
description = b'invalid enumerant',
baseOperation = glCreateShader,
cArguments = (GL_GEOMETRY_SHADER,),
result = 0
)
我的环境:Python 版本:3.6.7
OpenGL 核心配置文件版本字符串:4.5(核心配置文件)Mesa 18.0.5
操作系统版本:ubuntu 18.04(ubuntu 16.04 测试相同)
从这个站点我知道最低版本是 3.2。所以应该不是版本问题。
是否有可能是opengl的python包装器的错误?这是我的测试代码。
import glfw
from OpenGL.GL import *
glfw.init()
glfw.window_hint(glfw.SAMPLES, 4)
window_size = (800, 600)
window = glfw.create_window(*window_size, 'Vehicle Model', None, None)
glfw.make_context_current(window)
vertice_shader = glCreateShader(GL_VERTEX_SHADER)
geometry_shader = glCreateShader(GL_GEOMETRY_SHADER)
glfw.terminate()
解决方案
验证GL_VERSION
您的上下文字符串是否确实是您所假设的。
Mesa 通常只为您提供 OpenGL 2.1 上下文,除非您特别要求版本化核心上下文,但随着时间的推移,越来越多的驱动程序正在获得兼容性上下文支持。
使用 GLFW,您通常会通过在创建窗口之前设置的提示来请求 GL 版本,特别是您需要为GLFW_CONTEXT_VERSION_MAJOR
、GLFW_CONTEXT_VERSION_MINOR
和GLFW_OPENGL_PROFILE
.
推荐阅读
- git - 过滤 git diff 以显示带有 M 和 A 的两个文件夹
- php - 应用程序池挂起并继续加载
- excel - Power BI - 使用 M 添加列以计算 2 年的数据
- java - 无法使用 ScrollPane 滚动充满标签的 VBox
- java - 使用批处理脚本中的参数运行 exe 与从应用程序运行
- javascript - 如何将上传进度条添加到Angular6中的文件上传
- r - 在 y 轴上记录和中断 (ggplot2)
- selenium-webdriver - 对黄瓜功能文件中的所有场景都使用 webDriver 的单个实例是否可以接受
- linux - 重现`名称解析中的临时失败`
- php - 查询不起作用 - 打印数组值而不是在查询中使用它