2

私はopenGLを初めて使用し、他の質問の回答のほとんどで示唆されているように、オフスクリーンレンダリングにフレームバッファオブジェクト(FBO)を使用しています。

     GLuint fb[1],color_rb[1];
   glGenFramebuffersEXT(1, fb);
   glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb[0]);

   glGenRenderbuffersEXT(1, color_rb);
   glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, color_rb[0]);
   glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, 256, 256);
   glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_RENDERBUFFER_EXT, color_rb[0]);

   // rendering to the FBO 
   glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb[0]);
   glClearColor(0.0, 0.0, 0.0, 0.0);
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

   glViewport(0, 0, 256, 256);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   glOrtho(0.0, 256.0, 0.0, 256.0, -1.0, 1.0); 
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();

   glDisable(GL_TEXTURE_2D);
   glDisable(GL_BLEND);
   glEnable(GL_DEPTH_TEST);

   RenderATriangle();     // i have defined this function to render a texture in a triangular geometry

   GLubyte pixels[4*4*4];
   glReadPixels(0, 0, 4, 4, GL_BGRA, GL_UNSIGNED_BYTE, pixels);

   glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);

私が使用しているとき、コンパイルエラーは発生しません。ubuntu 12.10 システムに glew もインストールしました。このコードを実行すると、セグメンテーション違反が発生します。cout ステートメントを使用してエラーの場所を確認しようとしましたが、glGenFramebuffersEXT(1, GLuint* array) を使用したフレーム バッファーの生成でエラーが発生していることがわかりました。私のコードでの FBO の生成の何が問題なのか、誰か教えてください。もう1つ、ディスク内の外部画像ファイルをレンダリングする方法を誰かが教えてくれれば。

私のインポートは次のとおりです。

#include <iostream>
#include <GL/glew.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
4

1 に答える 1