6

このチュートリアルに基づいて、三角形をレンダリングすることになっている単純な OpenGL 3.3 プログラムを作成しましたが、最初から行うのではなく、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);

  ...
}

私は何が欠けていますか?

4

1 に答える 1

9

コア プロファイル OpenGL 3.3 では、レンダリングするためにシェーダーが必要です。そのため、頂点シェーダーとフラグメント シェーダーを含むプログラムをコンパイルしてリンクする必要があります。

于 2013-08-07T23:19:10.260 に答える