【发布时间】: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”。所以我试图对浮点数的二进制表示进行整数运算,这些浮点数是从我的原始输入数据转换而来的......