使用OpenGL 2.0绘制三角形(非ES)
我试图用OpenGL 2.0绘制矩形,但我得到了黑屏,这是我的代码:使用OpenGL 2.0绘制三角形(非ES),opengl,glsl,opengl-2.0,Opengl,Glsl,Opengl 2.0,我试图用OpenGL 2.0绘制矩形,但我得到了黑屏,这是我的代码: public FloatBuffer buf; public int program; @Override public void init() { program = glCreateProgram(); int vs = glCreateShader(GL_VERTEX_SHADER); int fs = glCreateShader(GL_FRAGMENT_SHADER); glShad
public FloatBuffer buf;
public int program;
@Override public void init()
{
program = glCreateProgram();
int vs = glCreateShader(GL_VERTEX_SHADER);
int fs = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(vs, ... code of vertex shader ...);
glShaderSource(fs, ... code of fragment shader ...);
glCompileShader(vs);
glCompileShader(fs);
glAttachShader(program, vs);
glAttachShader(program, fs);
glLinkProgram(program);
glUseProgram(program);
buf = BufferUtils.createFloatBuffer(6);
buf.put(-.5F); //LEFT
buf.put(-.5F);
buf.put(0);// CENTER
buf.put(.5F);
buf.put(.5F);
buf.put(-.5F).flip();// RIGHT
glClearColor(0, 0, 0, 1);
}
@Override public void render()
{
glClear(GL_COLOR_BUFFER_BIT);
int ptr = glGetAttribLocation(program, "pos");
glEnableVertexAttribArray(ptr);
glVertexAttribPointer(ptr, 2, false, 0, buf);
glDrawArrays(GL_TRIANGLES, 0, 3);
}
顶点着色器代码:
#version 110
attribute vec4 pos;
void main()
{
gl_Position = pos;
}
#version 110
void main()
{
gl_FragColor = vec4(1,0,0,1);
}
片段着色器代码:
#version 110
attribute vec4 pos;
void main()
{
gl_Position = pos;
}
#version 110
void main()
{
gl_FragColor = vec4(1,0,0,1);
}
我做错了什么?ooops,对不起,我忘了调用glViewport(0,0,w,h) 您的
#版本
指令在哪里?已添加,未更改。是否检查着色器编译和链接日志?是,没有错误。还检查了glGetError()。