Визуализация модели в буфер кадра - PullRequest
1 голос
/ 22 января 2012

В моей программе OpenGL я хочу сделать все в памяти. Я не хочу отображать данные в окне / экране. Поэтому я создал Frame Buffer. Следующее, что я хочу сделать, - визуализировать 3d модель для этого буфера кадров.

Я загрузил библиотеку Assimp для загрузки моделей. Я просто не уверен, как с этим работать. Похоже, он ожидает, что вы нарисуете все прямо в окне?

Все, что я хочу сейчас сделать, это загрузить и нарисовать эту модель в моем буфере кадров. Это в основном все.

Какие-либо советы / советы о том, как это легко сделать? Также приветствуются советы для другой библиотеки (которая может лучше соответствовать моим потребностям).

Мой код, в котором я хочу нарисовать мой буфер кадров:

glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo); // Bind our frame buffer for rendering
glPushAttrib(GL_VIEWPORT_BIT | GL_ENABLE_BIT); // Push our glEnable and glViewport states
glViewport(0, 0, window_width, window_height); // Set the size of the frame buffer view port

glClearColor (0.0f, 1.0f, 0.0f, 1.0f); // Set the clear colour
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear the depth and colour buffers
glLoadIdentity(); // Reset the modelview matrix


// RENDER 3D MODEL HERE....
// TEAPOT AS EXAMPLE
glTranslatef(0.0f, 0.0f, -5.0f); // Translate back 5 units
glRotatef(rotation_degree, 1.0f, 1.0f, 0.0f); // Rotate according to our rotation_degree value

//glFrontFace(GL_CW);
glutSolidTeapot(1.0f); // Render a teapot
//glFrontFace(GL_CCW);

int r = glGetError();
int s = glCheckFramebufferStatus(GL_FRAMEBUFFER);



glPopAttrib(); // Restore our glEnable and glViewport states
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); // Unbind our texture

Ответы [ 2 ]

1 голос
/ 22 января 2012

Библиотека assimp - это просто загрузчик;не имеет значения, будете ли вы рисовать внекадровый буфер кадров или буфер окон.

Попробуйте проверить коды возврата из glGetError и glCheckFramebufferStatus .

0 голосов
/ 22 января 2012

В моей программе OpenGL я хочу отобразить все в памяти.Я не хочу отображать данные в окне / экране.Поэтому я создал Frame Buffer.Следующее, что я хочу сделать, это визуализировать 3d модель для этого буфера кадров.

Есть ли у вас контекст OpenGL?Я вижу, что вы используете GLUT.Чтобы с помощью GLUT получить контекст OpenGL, вы должны создать окно.Без контекста OpenGL вы не можете создать объект Frame Buffer.

Для вас это означает, что вы не можете использовать GLUT.Но в этом нет ничего особенного, потому что GLUT - это просто какая-то библиотека, многие думают, что это что-то неотъемлемое от OpenGL, а это не так.В X11 / GLX это просто, но немного утомительно в Windows.В Windows вам нужно создать окно прокси, чтобы получить промежуточный контекст OpenGL для первой фазы загрузки расширения, который вам необходим, чтобы получить доступ к функции для создания PBuffer;это окно прокси не обязательно должно быть видимым.Обратите внимание, что вы не можете использовать невидимое окно с контекстом OpenGL для рендеринга за пределами экрана, потому что в этой ситуации пиксели не пройдут тест владения пикселем и, следовательно, не будут обработаны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...