【问题标题】:Enabling OpenGL extensions启用 OpenGL 扩展
【发布时间】:2013-05-31 02:45:25
【问题描述】:

我正在尝试在我的 GLSL 着色器中执行一些整数运算(除法和模数),但它们似乎不起作用,我读到我需要启用 EXT_GPU_shader4 才能获得整数运算。但是,我找不到的是如何做到这一点。是行:

#version 330 core
#extension GL_EXT_GPU_SHADER4 : require

够了吗?或者我是否也需要以某种方式使用 C API 启用它?目前我在编译期间收到一个错误,即不支持该扩展。我在 GeForce 670 上;一张很新的卡片。

【问题讨论】:

  • 这个答案将解决你的大部分问题:stackoverflow.com/questions/11584515/passthrough-geometry-shader
  • 这是有效的,但是是多余的。版本 330 已经包含整数支持。如果扩展程序不可用,使用“require”而不是“enable”将导致错误。请注意,如果核心已经支持扩展,则不一定必须支持(当然根本不需要支持,但即使卡支持整数运算,即使核心版本包括该功能是受支持的,实现也不需要公开该扩展)。
  • 如果我错了,请纠正我,但 EXT_gpu_shader4 的功能已经可用:#version 150 core
  • 是的,你们是对的。谢谢!事实证明我的结果都很疯狂,因为 LWJGL(或 OpenGL?)正在将我的缓冲区从 int -> float 转换,并且我有一个绑定到缓冲区的“in int var”。所以我试图对浮点数的二进制表示进行整数运算,这些浮点数是从我的原始输入数据转换而来的......

标签: opengl glsl lwjgl


【解决方案1】:

如果你想启用 GPU_shader4,那么可以,那行就可以了。

然而,您根本不应该启用 EXT_gpu_shader4OpenGL 3.0 已经将所有这些扩展整合到核心功能中。由于您的 #version 声明,没有理由启用扩展程序来访问您已经可以访问的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多