2014-09-14 2 views
1

Я недавно решил начать изучение OpenGL, и я попал в учебники LazyFoo. Однако у меня возникла проблема с рендерингом текстур через объекты framebuffer as described here, так как мой компьютер поддерживает только OpenGL 1.4 (да, я обновил свои драйверы), который не поддерживает такие функции, как glGenFramebuffers() и glBindFramebuffer().Альтернативы объекта Framebuffer?

Есть ли альтернативные способы для меня сделать что-либо, кроме буфера?

+2

OpenGL-1,4 звучит устрашающе так же, как Windows-Vista/7/8 запасного варианта нет-правильно- OpenGL-драйвера. Также сегодня вам будет трудно найти систему, которая не поддерживает OpenGL-2.1 или FBOs, по крайней мере, через расширение. * Не обновляйте свои драйверы через __Windows Update__, который не выполняет эту работу. Вы должны скачать драйверы вручную с веб-сайта производителя GPU и установить их. * – datenwolf

+0

О, и даже драйверы для самого древнего оборудования, поддерживающего OpenGL (например, первые карты GeForce), ретроактивно получили поддержку расширения FBO; возможности всегда были там, через PBuffers (см. ответ Reto), FBOs просто делают доступ к этому намного проще. – datenwolf

ответ

0

Вы пробовали использовать Буфер накопления?

http://www.cse.msu.edu/~cse872/tutorial5.html

+0

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

+0

Помимо буфера накопления, я не знаю никаких других решений. Вы пробовали обновить свой компьютер? – Chantola

+0

Я хотел бы обновить свой компьютер, но живущая в Европе делает детали намного сложнее. И тогда есть денежная проблема, у меня есть только несколько сотен дополнительных денежных средств. – TakingItCasual

1

Существует старый механизм закадровым рендеринга называется пиксельным буфер (пиксельный буфер).

Он работает совсем не так, как FBO, потому что создание PBuffer не является частью самого API OpenGL. Вы создаете PBuffer, используя интерфейс оконной системы, который зависит от платформы. Например, вы будете использовать функции семейства WGL под Windows, GLX в системах на основе Unix/Linux, EGL на Android и т. Д., Чтобы настроить PBuffers.

В связи с этим вы также используете отдельный контекст для рендеринга в PBuffer. Таким образом, вы не можете просто переключаться между объектами рендеринга в одном контексте. По крайней мере некоторые оконные системные интерфейсы позволяют использовать результат рендеринга PBuffer как текстуру в другом контексте.

Поскольку это зависит от платформы, я не буду подробно останавливаться на том, как используются PBuffers (честно говоря, это было очень долгое время с тех пор, как я их использовал, поэтому память нечеткая). Но вот несколько указателей, чтобы вы начали:

https://www.opengl.org/sdk/docs/man2/xhtml/glXCreatePbuffer.xml http://developer.download.nvidia.com/opengl/specs/WGL_EXT_pbuffer.txt https://www.khronos.org/registry/egl/sdk/docs/man/html/eglCreatePbufferSurface.xhtml

+0

EGL позволяет использовать это в любой системе, а не только на Android.Я, например, успешно использую его на Ubuntu - привязывая OpenGL API, а не GLES. – Ruslan

Смежные вопросы