我试图编译GLSL着色器在LWJGL使用OpenGL。我在MacOS Sierra上。
尝试编译着色器时出现以下错误:
ERROR: 0:1: '' : version '400' is not supported
ERROR: 0:1: '' : syntax error: #version
着色器代码在Windows上工作,但在macOS上测试时却不能。下面是着色器代码:
#version 400 core
in vec3 position;
in vec2 textureCoords;
out vec2 pass_textureCoords;
uniform mat4 projectionMatrix;
uniform mat4 viewMatrix;
void main(void)
{
gl_Position = projectionMatrix * viewMatrix * vec4(position, 1.0);
pass_textureCoords = textureCoords;
}
下面是我如何加载着色器。。。
private static int loadShader(String file, int type) throws IOException {
StringBuilder shaderSource = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(
ShaderProgram.class.getClassLoader().getResourceAsStream("shaders/" + file))
)) {
String line;
while ((line = reader.readLine()) != null) {
shaderSource.append(line).append('\n');
}
System.out.println(shaderSource.toString());
int shaderID = GL20.glCreateShader(type);
GL20.glShaderSource(shaderID, shaderSource);
GL20.glCompileShader(shaderID);
if (GL20.glGetShaderi(shaderID, GL20.GL_COMPILE_STATUS) == GL11.GL_FALSE) {
System.out.println(GL20.glGetShaderInfoLog(shaderID, 500));
System.err.println("Error compiling shader " + file);
System.exit(-1);
}
return shaderID;
}
}
print语句返回正确的输出,但它仍然给我错误。
我在stackoverflow上下搜索了一个解决方案,但每个人都说他们在编译它时没有换行符,我有。我不明白为什么会这样。
如果另一个答案不能解决您的问题,我怀疑您正在使用错误的OpenGL版本创建OpenGL上下文。您将需要使用核心配置文件创建上下文——这也意味着不支持遗留函数和特性,因此如果您使用了其中的任何一个,您将需要用更新的等价物替换它们。(核心配置文件不向后兼容。)
您好,我不是这里的java专家,我用JOGL做了一些实验,所以可能我不能给您一个正确方向的提示。
MAC上的新行问题如何将新行附加到StringBuilder
第二:
https://www.khronos.org/registry/OpenGL/specs/gl/GLSLangSpec.4.00.pdf
除注释和空白外,#version指令必须首先出现在着色器中。
这是JOGL中看起来像RAW的东西,你看换行符是在version指令之后需要的,其他任何东西都有一个分号作为语句分隔符。
//
// create fragment Shader
int fragShader = gl4.glCreateShader(GL4.GL_FRAGMENT_SHADER);
gl4.glShaderSource(fragShader, 1,
new String[]{"#version 420 \n"
+"out vec4 fragColor;"
+"void main(void) {"
+"fragColor = vec4(0.2, 0.2, 0.5, 1.0);}" }, null);
gl4.glCompileShader(fragShader);
我有一个项目正在使用Java8。 到目前为止,在pom中,我们将源版本和目标版本指定为1.8: 我们希望利用 Java 9 的“-发布”选项,并添加了以下内容: 但是现在我们得到了下面的错误: 我们使用maven 3.5.3,3.8.0版本中的maven-compiler-plugin和Java 10来编译这个项目。 这里怎么了?
我使用的是IntelliJ IDEA Ultimate 2019.3.1。每当我尝试启动任何简单的Java Maven项目(甚至可能是一个简单的Hello World)时,我都会得到以下错误: 通过终端运行,得到以下输出: 通过终端运行,得到以下输出:
问题内容: 我正在尝试构建一个应用程序,但是它给出了一些错误。我的JDK版本如下: 这是我的错误日志: 问题答案: 发生这种情况是因为在编译时JDK较高,而在运行时JDK较低。 以下是版本列表:
问题内容: Hello Hello.html Error 可能是什么问题? 问题答案: 问题是由于Java版本不匹配。参考类参考: Java SE 12 = 56(十六进制0x38) Java SE 11 = 55(十六进制0x37) Java SE 10 = 54 Java SE 9 = 53 Java SE 8 = 52 Java SE 7 = 51 Java SE 6.0 = 50 Java
我在启动install Launcher时遇到这个错误。$JAVA_HOME/bin/java-jar rundeck-launcher-2.8.2.jar 线程“main”java.lang.UnsupportedClassVersionError中出现异常:com/dtoLabs/rundeck/expandrunserver:不支持Major.Minor版本52.0 $JAVA_HOME/b
在生成APK时,我得到了一个错误:项目使用的是一个不受支持的Gradle版本。我正在使用Android Studio3.5版本。 我试图更改build gradle类路径以匹配gradle-wrapper.properties中的distributionUrl,但是错误仍然存在。 首先,在项目级设置中,选择Use default gadle wrapper。 build.gradle文件: