如何在GLFW 3中创建OpenGL 3.3上下文

时间:2013-08-07 20:33:36

标签: opengl glfw

我编写了一个简单的OpenGL 3.3程序,该程序应该基于this tutorial呈现三角形,除了我使用GLFW创建窗口和上下文,而不是从头开始。另外,我正在使用Ubuntu。

虽然三角形没有渲染,但我只是得到一个黑屏。像glClearColor()glClear()这样的函数似乎完全正常工作,但渲染三角形的代码却没有。以下是它的相关内容:

#define GLFW_INCLUDE_GL_3
#include <GL/glew.h>
#include <GLFW/glfw3.h>

int main ()
{
  glfwInit();

  glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
  glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
  glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

  GLFWwindow* window = glfwCreateWindow(800, 600, "GLFW test", NULL, NULL);

  glfwMakeContextCurrent(window);

  glewExperimental = GL_TRUE;
  glewInit();

  float vertices[] = {-0.5f, -0.5f, 0.0f, 0.5f, 0.5f, -0.5f};

  GLuint VBOid[1];

  glClear(GL_COLOR_BUFFER_BIT);

  glGenBuffers(1, VBOid);
  glBindBuffer(GL_ARRAY_BUFFER, VBOid[0]);
  glBufferData(GL_ARRAY_BUFFER, 6 * sizeof(float), vertices, GL_STATIC_DRAW);

  glEnableVertexAttribArray(0);

  glBindBuffer(GL_ARRAY_BUFFER, VBOid[0]);
  glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
  glDrawArrays(GL_TRIANGLES, 0, 3);

  ...
}

我错过了什么?

1 个答案:

答案 0 :(得分:9)

在核心配置文件OpenGL 3.3中,您需要一个着色器才能渲染。因此,您需要编译和链接包含顶点和片段着色器的程序。