问题标签 [opengl-1.x]
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.
c++ - 如何使用材质的环境颜色而不是灯光的全局环境颜色?(OpenGL 1)
我正在用 OpenGL 1.1 编写我的编程的灯光效果。灯光和法线的东西有效。我只有错误的颜色
我想使用所用材料的环境颜色,而不是全局环境光。
当我使用此代码时,我有一个深灰色(64、64、64)用于遮光的脸,但绝不是黑色(0、0、0)。
这是伪代码:
opengl - OpenGL3中的虚线?
我目前正在将使用线框模型的旧 OpenGL 1.1 应用程序移植到 OpenGL 3.0。
在 1.1 中,以下代码用于创建虚线:
这里像往常一样将参数推送到堆栈以影响所有后续绘图操作。
我的问题:在不再使用此堆栈的 OpenGL3 中如何做到这一点?如何将我的线设置为虚线(可能在将坐标交给 glBufferData() 之前?
c++ - opengl中的多个聚光灯不起作用
我将 opengl 用于教育目的,但我无法创建多个聚光灯来表示路灯。我使用迭代器创建了几个,但最后只有最后一个聚光灯得到光,我相信问题出在 addlight 方法中,但我不知道发生了什么。
在下图中,您可以看到发生的情况。
opengl - 在旧版 OpenGL 1.x 中恢复最后的纹理状态
我想记住 OpenGL 1.x 中的当前纹理状态,然后再恢复它。我可以glIsEnabled
用来检查哪些纹理类型处于活动状态。
GL_TEXTURE_2D
例如,启用多种文本类型是否有意义GL_TEXTURE_CUBE_MAP
?
例如, glGet*函数允许获取当前纹理 ID,GL_TEXTURE_BINDING_2D
但要绑定以前的纹理,我还需要知道 glBindTexture 的适当目标。
- 如何实现?
c - 使用静态管道的 GLFW3/GLU 3D 世界空间
在之前的项目中,我启用了深度测试,使用在启动时调用一次的gluPerspective来设置 3D 空间。目前,在使用以下代码初始化 3D 世界后,我正在渲染一个介于 -0.5 和 0.5 之间的正方形,其原点为 0.0,这将导致正方形覆盖整个屏幕:
我正在寻找的是一种设置视角的方法,以便在世界空间中呈现形状。例如,下面的代码片段应该会渲染一个 200x200 的正方形:
下面的代码是我目前用来初始化 3D 世界的代码。
我是否错过了设置 3D 空间的任何步骤,如果gluPerspective
用于执行此操作,是否有任何建议为什么它不起作用?
我能够使用 2D 实现这一点ortho
,重要的是世界是 3D。一切都是用 C 语言编写的,使用 OpenGL 和 GLU 高达 1.3,我的 GLFW 设置与此相同。由于技术限制,我无法使用现代管道。
c - 顶点对象不显示(旧版 OpenGL 1.2)
所以我得到了 OpenGL Redbook 3e,目前在第 2 章(对于初学者来说,较新的 OpenGL 似乎太难进行图形编程)。我从书中复制了一个代码片段(我添加了初始化代码和绘图代码),并尝试了渲染顶点数组(、、和)的glDrawElements
每个glDrawRangeElements
选项gDrawArrays
。对于这个示例,我决定使用 glDrawArrays,因为它似乎是最直接的。据我所知,这段代码没有任何问题,因为它可以编译并运行。但是,没有绘制多边形。有谁知道发生了什么?我觉得我要么犯了一个非常愚蠢的错误,要么错过了一些基本的东西。
c++ - 将阴影贴图添加到封闭源单通道固定功能管道 OpenGL 1.x 游戏
我一直在破解一个非常古老的固定功能管道 OpenGL 1.x 游戏。我一直在拦截 opengl 调用并注入各种现代 opengl 元素,这样我就实现了新的照明并添加了后期处理着色器(可编程管道)。
我想为这个目前不支持的游戏生成一个阴影贴图(用于实时阴影)。据我了解,我需要执行游戏当前不支持的多通道渲染,并且我需要其中一个通道来使用光源作为相机位置,以生成阴影贴图。
我在想我可以加倍绘制调用(drawelements和drawarrays),对于每个调用之一,使用gluLookAt将场景转换为灯光位置的透视图,并将其渲染到帧缓冲区,然后恢复相机并继续渲染
但是,我不确定我是否足够了解 opengl 状态来执行此操作,因为在单独的渲染调用之前每次使用 gluLookAt 都会给我带来非常时髦的结果,即使我提供了从模型视图矩阵中提取的当前相机位置。这些时髦的结果就像,一些随机顶点在正确的位置,而许多不在,它们在整个地方闪烁和移动
我假设我不应该在单个渲染调用顶点数组时尝试转换相机..但我不确定下一步该怎么做,因为我需要两次通过。
问题:在渲染调用期间是否存在执行 gluLookAt 有意义的特定时间,或者使用它从单个渲染调用的上下文中转换整个场景的方法?
我唯一的另一个想法实际上是按顺序记录所有渲染和矩阵转换,然后重播它们以进行第二遍。
opengl - 是否可以在使用 glBitmap 绘制的位图上使用 glScalef?
我正在制作一个使用 FreeType 2 和旧版 OpenGL 的文本渲染器。问题是,FreeType 2 的坐标系在左上角有 (0, 0),而 OpenGL 的坐标系是笛卡尔坐标系。这意味着我必须翻转位图。我希望 glScalef 可以与 glBitmap 一起使用,但它没有效果。谁能告诉我是否可以使用 glScalef 垂直翻转位图,或者如果不可能,请指向其他可以翻转位图的源(最好尽可能高效)?