我知道这听起来像是一个奇怪的“问题”,但请坚持住。
我有一个支持OpenGL 3.3的显卡。< br >但是,我正在编写针对OpenGL 2.0的代码,因此也是针对1.1版的代码。< br >我有以下GLSL代码:< br >
#version 110
in vec4 position; // x,y,z,w (ignores w)
uniform mat4 mvpMatrix;
void main() {
gl_Position = mvpMatrix * position;
}
如您所见,我已将GLSL版本指定为#version 110。
您可能还注意到,我对vec4位置使用了“in”关键字
该关键字在指定的GLSL版本中不可用,但它在我的图形卡(同样支持OpenGL 3.3)上编译时不会出错
正确的关键字应为“属性”
在只有OpenGL 2.1的计算机上测试时,着色器代码会出现编译错误。
为什么我的编译器编译时不出错?难道不应该编译符合版本110的着色器并报告相应的错误吗?< br >有什么方法可以检查这一点吗?也许是警告什么的?我不知道。救命啊!< br >
此外,我正在使用LWJGL用Java编程。如果这有帮助的话,但我认为这与问题无关。
编辑:
我添加了代码以在着色器编译后始终检查信息日志,并且在使用'in'关键字时仍然没有报告任何内容。
即使编译成功,也最好检查编译信息日志。它可以包含警告和其他诊断信息。在LWJGL中,您可以通过调用以下函数获取id为<code>shaderId
int logLen = GL20.glGetShaderi(shaderId, GL20.GL_INFO_LOG_LENGTH);
GL20.glGetShaderInfoLog(shaderId, logLen);
不幸的是,GLSL编译器不报告错误是很常见的。我的猜测是大多数测试都使用正确的着色器进行,错误处理也没有得到验证,并且优先级也不高。
此外,一旦供应商发布了一个版本(意外地)让某些错误通过,他们可能不想在以后添加更严格的错误检查。风险在于,它会破坏已经发布的软件,而这些软件只会因为错误检查不完整而工作。
不同的编译器在接受什么GLSL方面存在很大差异。即使您的着色器编译成功,也值得查看编译日志。日志可以包含警告和错误。
在LWJGL中,检查日志的方式似乎是:
private static String getLogInfo(int obj) {
return ARBShaderObjects.glGetInfoLogARB(obj,
ARBShaderObjects.glGetObjectParameteriARB(obj,
ARBShaderObjects.GL_OBJECT_INFO_LOG_LENGTH_ARB));
}
(代码在Box.java的第129行)
代码不编译。我不明白错误是什么,请帮忙) 错误文本:g-Wall-c“main.cpp”(/media/ad/4GB-NTFS/prog/laba2)main。cpp:In函数“int main()”:main。cpp:46:12:错误:调用“Record::Record()”记录r1;^主要的cpp:12:1:注意:候选者:Record::Record(std::\u cxx11::string
1.1. 代码编译 1.1.1. Openwrt编译 1.1.2. Kernel编译 1.1.3. Uboot编译 1.1.4. VSP编译 1.1. 代码编译 1.1.1. Openwrt编译 作为Kamino18 YODAOS的整体编译环境,使用openwrt可以编译出系统正常运行所需的主要image如下: 镜像名字 镜像运行位置 镜像说明 镜像生成位置 mcu.bin MCU The ima
关于目标旗。与使用Java6编译器编译代码相比,使用针对Java6的Java8编译器编译Java6代码(当代码仍然在JVM6上运行时)有什么好处吗?
ucore 代码编译 (1) 编译过程:在解压缩后的 ucore 源码包中使用 make 命令即可。例如 lab1中: [email protected]: ~/lab1$ make 在lab1目录下的bin目录中,生成一系列的目标文件: ucore.img:被qemu访问的虚拟硬盘文件 kernel: ELF格式的toy ucore kernel执行文,被嵌入到了ucore.img中
我想在将源代码传递给编译器之前,在编译时转换java源代码。换句话说,我想创建一个能够转换的预处理器 转换为任何其他代码,如: null 我很乐意为这两种方法找到一个java代码预处理的简单示例。 有没有人认为有什么聪明的方法来进行代码转换,而不是用多个ivy模块完全改变现有的大型代码库?注释似乎是最好的方法,但我不明白该怎么做。
我正在尝试学习java的这个新GWT部分。。。 我做了我的第一个简单的应用程序 我命名了 我的模块:-HelloWorld 我收到以下错误: 2014年4月18日下午4:00:53爪哇。util。首选项。WindowsPreferences警告:无法在根0x8000002处打开/创建prefs根节点Software\JavaSoft\prefs。Windows RegCreateKeyEx(…)返