无法在简单的OpenGL 3.0程序中设置顶点的位置

时间:2016-11-11 12:26:27

标签: c++ opengl ubuntu-14.04 glut freeglut

我希望创建一个简单的OpenGL示例来构建。以下程序编译(Ubuntu 14.04,freeglut)并在屏幕中间显示大小为10的GL_POINT。问题是无论我在Vertices数组中放入什么值,它都会这样做。

我尝试了多种不同的方法来定义顶点,例如,浮点数,结构和显示的GLfloats,但屏幕位置不会改变。

#include <stdio.h>
#include <GL/glew.h>
#include <GL/freeglut.h>

GLuint VBO;

static void RenderSceneCB()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glEnableVertexAttribArray(0);
    glBindBuffer(GL_ARRAY_BUFFER, VBO);
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
    glPointSize(10.0);
    glDrawArrays(GL_POINTS, 0, 1);
    glDisableVertexAttribArray(0);
    glutSwapBuffers();
}


static void InitializeGlutCallbacks()
{
    glutDisplayFunc(RenderSceneCB);
}

static void CreateVertexBuffer()
{
    GLfloat Vertices[] = {  0.5f, 0.5f, 0.0f  };
    glGenBuffers(1, &VBO);
    glBindBuffer(GL_ARRAY_BUFFER, VBO);
    glBufferData(GL_ARRAY_BUFFER, sizeof(Vertices), Vertices, GL_STATIC_DRAW);
}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA);
    glutInitWindowSize(1024, 768);
    glutInitWindowPosition(100, 100);
    glutCreateWindow("Example");

    InitializeGlutCallbacks();

    GLenum res = glewInit();
    if (res != GLEW_OK) {
      fprintf(stderr, "Error: '%s'\n", glewGetErrorString(res));
      return 1;
    }

    printf("GL version: %s\n", glGetString(GL_VERSION));
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
    CreateVertexBuffer();
    glutMainLoop();

    return 0;
}

0 个答案:

没有答案