问题标签 [pyopengl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
22770 浏览

python - 如何正确使用 gluLookAt?

我不想为我的 3D 世界使用复杂的三角函数来计算旋转和类似的东西,所以 gluLookAt 似乎是一个不错的选择。根据文档,我需要做的就是为相机位置放置 3 个坐标,三个用于我应该查看的位置和一个“向上”位置。最后一个是没有意义的,直到我认为它必须与屏幕顶部的视线方向成直角。

它根本不像那样工作。我有一些python代码。这是当我进入游戏的这一部分时初始化一些数据和一些模式代码的代码:

“game.engage_3d(45,0.1,100)” 基本上将投影矩阵设置为具有 45 度视角和 0.1 和 100 的近远坐标。

第一个 gluLookAt 很好地将相机放置在正确的位置。

我有一个以(0,0,0)为中心绘制的立方体,没有gluLookAt它可以正常工作。在我绘制它之前,我有这个代码:

从那以后,向上的位置应该始终与它始终成直角相同。我原以为它会做的是用上下键在z轴上前后移动,用左右键在x轴上左右移动。实际发生的是,当我使用左右键时,立方体将围绕被按键加速的“眼睛”旋转。向上键使另一个立方体从无处穿过屏幕并击中第一个立方体。向下键将神秘的克隆立方体带回来。这可以与轮换相结合,以产生与文档所述完全不同的结果。

到底怎么了?

谢谢你。

0 投票
3 回答
94 浏览

visual-studio - 如何修复省略所需 C 运行时库的 3rd 方库?

我正在为需要 PyOpenGL 包的项目编写 NSIS 安装程序,但是由于我的系统不包含mscvr71.dll(VS C 运行时库),该包的安装失败。根据KB326922,这个库应该已经与 PyOpenGL 一起打包。

我的问题是,纠正这个问题的最安全方法是什么,以便我可以在我的安装程序中安装 PyOpenGL dep?我当然不想在安装过程中将文件放入 system32 中,而且我不知道包含此文件的任何更新(除了 VS 本身)。

编辑:

  • 我不能轻易地重新打包 PyOpenGL 以包含丢失的 dll。我没有安装 VS 并且不确定如何重建包和安装程序。
0 投票
2 回答
1939 浏览

opengl - 输入 GL_POINTS 时,几何着色器不执行任何操作

我正在尝试使用几何着色器将点转换为线段(GL_POINTS 到 GL_LINE_STRIP),但没有出现线段。如果我将输入更改为 GL_LINES,并且只是重复顶点,那么我会得到我期望的行为。这是怎么回事?

这是一个演示该行为的完整程序。照原样,我只得到一个黑色的窗口。将 USE_POINTS 设置为 False 让我得到了我期待的旋转迷幻闪烁线。

0 投票
5 回答
1344 浏览

python - python中从浮点元组列表构建ac数组的最快方法是什么?

上下文:我的 Python 代码将二维顶点数组传递给 OpenGL。

我测试了 2 种方法,一种使用 ctypes,另一种使用 struct,后者快两倍以上。

还有其他选择吗?关于如何加速此类代码的任何提示(是的,这是我的代码的一个瓶颈)?

0 投票
2 回答
3324 浏览

python - 使用 GLSL 的 OpenGL 阴影映射

我正在尝试使用 GLSL 使阴影映射工作。不幸的是,即使我有相当不错的深度缓冲精度,我的深度渲染结果也无法使用。它像线框一样渲染,下图可能是更好的描述。

我还包括一个测试用例(包括着色器的单个文件),唯一的依赖项是 pyopengl。

替代文字

0 投票
1 回答
119 浏览

python - 同时充当套接字服务器时,pyopengl 显示被阻塞

我实际上正在使用 pyopengl 程序来充当套接字服务器。同时,服务器接收客户端的命令并解释这些命令,同时进行相应的绘图。

万一在做套接字的事情时主线程被阻塞了,我实际上启动了一个线程来做套接字服务器接受的事情,并在显示循环中调用 updateserver 套接字方法。

  1. 我不知道如何终止线程
  2. 一旦用另一个python文件编写的客户端开始推送数据,显示循环就会挂断,就好像它已经死了一样
0 投票
3 回答
33377 浏览

opengl - 我在哪里可以找到不使用任何已弃用功能的优秀在线 OpenGL 3.0 教程?

我刚刚购买了第五版 OpenGL SuperBible。我很高兴他们避免使用已弃用的功能,但他们的示例使用GLTools. GLTools提供了一系列有用的函数来渲染简单的 3D 对象和管理视锥体、相机和变换矩阵。

这一切都很好,但是提供的抽象隐藏了低级细节,而且我很难转移到我无法使用的代码GLTools——例如,pyopengl. 我在网上看到的绝大多数教程都使用即时模式,我试图避免这种模式。那些使用glDrawArrays的人使用glEnableClientState,我也试图避免。

我正在寻找的是完全兼容 OpenGL 3.x 的介绍性教程。如果这个订单太高,也许一份洗衣清单好的“起点”功能就可以了。

0 投票
2 回答
24203 浏览

opengl - 为什么我的 OpenGL Phong 着色器表现得像平面着色器?

过去几周我一直在学习 OpenGL,但在实现 Phong 着色器时遇到了一些麻烦。smooth尽管我使用了限定符,但它似乎没有在顶点之间进行插值。我在这里错过了什么吗?为了在应得的地方给予赞扬,顶点和片段着色器的代码大量来自OpenGL SuperBible第五版。我强烈推荐这本书!

顶点着色器:

片段着色器:

这张来自维基百科的(公共领域)图像准确地显示了我得到的图像类型和我的目标——我得到的是“平面”图像,但我想要“Phong”图像。

任何帮助将不胜感激。谢谢!

编辑:如果有所作为,我使用的是 PyOpenGL 3.0.1 和 Python 2.6。

编辑2:

解决方案

原来问题出在我的几何学上。科斯是正确的。对于其他在 Blender 模型中遇到此问题的人,Kos 指出这样做可以解决问题Edit->Faces->Set Smooth。我发现 Wings 3D “开箱即用”。

0 投票
1 回答
757 浏览

opengl - glTranslate / glRotated 之后的openGL拾取

我写了一个pick函数,从opengl画布中挑选场景对象。

如果我在绘制对象时不使用 glTanslate 或 glRotated ,这将非常有效,即,我可以在绘制时选择线条,

但当我这样做时,

我错过了什么?

0 投票
1 回答
958 浏览

python - 实现渲染到顶点数组,glReadPixels 失败(无效操作)

我正在尝试将顶点数据从纹理复制到顶点缓冲区,然后绘制顶点缓冲区。据我所知,最好的方法是将纹理绑定到 fbo,然后使用 glReadPixels 将其复制到 vbo。但是,我似乎无法让这个工作:glReadPixels 失败并出现错误“无效操作”。

欢迎更正、示例和替代方法。:)

以下是相关代码: