使用 OpenGL 2.0(不是 ES)绘制三角形
Posted
技术标签:
【中文标题】使用 OpenGL 2.0(不是 ES)绘制三角形【英文标题】:Drawing triangle with OpenGL 2.0 (not ES) 【发布时间】:2013-09-17 15:18:33 【问题描述】:我尝试使用 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);
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
指令在哪里?
已添加,没有任何改变。
你在检查着色器编译和链接日志吗?
是的,没有错误。还检查了 glGetError()。
【参考方案1】:
糟糕,抱歉,我忘记调用 glViewport(0, 0, w, h);
【讨论】:
以上是关于使用 OpenGL 2.0(不是 ES)绘制三角形的主要内容,如果未能解决你的问题,请参考以下文章