【问题标题】:Drawing triangle with OpenGL 2.0 (not ES)使用 OpenGL 2.0(不是 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()。

标签: opengl glsl opengl-2.0


【解决方案1】:

糟糕,抱歉,我忘记调用 glViewport(0, 0, w, h);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多