【问题标题】:Move to latest OGL without using GLSL在不使用 GLSL 的情况下迁移到最新的 OGL
【发布时间】:2012-12-12 03:40:38
【问题描述】:

我正在开发仅完全支持 GL

我使用 OpenGL Extension Viewer 3 检查了扩展。报告显示:
1.1 100%
1.2 100%
1.3 100%
1.4 100%
1.5 66%(不支持:GL_ARB_occlusion_query)
2.0 10%(仅支持:GL_EXT_stencil_two_side)
2.X 0%
3.X 0%
4.X 0%

【问题讨论】:

  • 显示 OpenGL 2.2 的规范。
  • @genpfault 抱歉,我把数字弄乱了。编辑并添加了日志。

标签: c++ opengl glsl


【解决方案1】:

…仅完全支持 GL

首先:状态机未被弃用。固定功能管道已被弃用。但这种变化只适用于 OpenGL-3 核心和更远的地方。因此,如果您仅限于 OpenGL-2,那么固定功能和所有爵士乐仍然可用。

那么有没有办法在不使用 GLSL 的情况下“升级”?

您确实意识到,弃用固定功能管道的含义大致相同:现在一切都发生在着色器上。用 GLSL 编写的着色器。

GLSL 在 OpenGL-2 中也可用。这不是强制性的。

很多函数没有使用最新的 glext.h 声明。所以我不能创建一个着色器程序或至少一个 VBO。

您需要的不仅仅是 glext.h。您还需要一些从 OpenGL 实现中加载高级功能的代码。一个流行的选择是 GLEW,可在 http://glew.sourceforge.net

我不能用它

嗯,不是开箱即用。但是使用 GLEW 是小菜一碟:

  1. 下载 GLEW
  2. 安装到额外安装的库并包含目录
  3. 将所有出现的#include <GL/gl.h> 替换为#include <GL/glew.h>
  4. 将 glew32.lib 作为库依赖项添加到链接器设置中
  5. 在每个 OpenGL 上下文创建后立即添加对 glewInit(); 的调用。

【讨论】:

  • glewInit() 也很重要:)
【解决方案2】:

尝试使用glew。它不会直接解决您的问题,而是在 Windows 上使用 OpenGL 扩展的许多(可能相关的)问题。

【讨论】:

  • 有没有办法根据可用的驱动程序从 VOB 切换到函数管道? API?
  • 这些是不同的东西。 VBO 是一种存储几何图形的方法,因此可以在渲染过程中有效地访问它。您可以将几何图形存储在 VBO 中并使用固定功能光照,也可以使用 glVertex* 等并使用 GLSL 光照。
  • 谢谢。我会尽力将它以某种方式结合起来:VBO 和 GLSL 的理论以及管道的实际部分。
【解决方案3】:

查看您的平台是否支持 OpenGL ES 2.0。这实际上已成为现代台式机的标准。如果是这样,请使用 OpenGL ES 2.0。

您还可以在 OpenGL 扩展中找到许多您需要的功能。查看您的平台上有哪些扩展可用,并注意函数名称可能与后来的标准名称不同(例如 glBindFramebuffer_EXT)

【讨论】:

    猜你喜欢
    • 2019-08-18
    • 2012-01-29
    • 2012-08-08
    • 2018-10-08
    • 2012-08-20
    • 1970-01-01
    • 2020-03-08
    • 2013-06-03
    • 2015-11-06
    相关资源
    最近更新 更多