所以我决定尝试使用Java编写一个简单的OpenGL应用程序,只是为了看看它与我的其他工作相比如何,我遇到了我的着色器拒绝编译的问题.他们真的不能简单得多,这是我的顶点着色器来展示我的意思:
//Minimal vertex shader
#version 330
in vec3 in_Position;
in vec3 in_Color;
out vec3 var_Color;
void main(void)
{
gl_Position = vec4(in_Position, 1.0);
var_Color = in_Color;
}
Run Code Online (Sandbox Code Playgroud)
片段着色器也很简单,所以除非有人要求,否则我不会打扰它.当我检查日志时,我收到以下错误(对于两个着色器):
(0) : error C0000: syntax error, unexpected $end at token "<EOF>"
Run Code Online (Sandbox Code Playgroud)
我不确定这是否相关......但我正在使用Java在Linux(Ubuntu 11.04)上进行开发.我使用的唯一库是JOGL(用于openGL绑定)和标准Java库(如果它甚至算......)我的显卡是Nvidia GeForce 9600M GS,我检查了扩展,它完全支持OpenGL 3.3.
帮我Stack Overflow,你是我唯一的希望.
编辑:
根据要求,这是负责加载和编译着色器源的函数.另外,说到GLSL,我是一个超级n00b,所以我真的不知道要找什么,以确保OpenGL的格式正确.关于该主题的最新(即处理OpenGL 3.x)教程的链接将不胜感激.
private int CreateCompiledShader(File source, int shader, GL3 gl){
int shaderloc = gl.glCreateShader(shader);
BufferedReader input = null;
ArrayList<String> lines = new ArrayList<String>();
ArrayList<Integer> lengths = new ArrayList<Integer>();
try{
input = new BufferedReader(new …Run Code Online (Sandbox Code Playgroud)