Конечная цель - визуализировать изображения произвольных размеров в JOGL и делать это быстро на основных графических картах.Отображение изображений JOGL
Моя первоначальная попытка состояла в том, чтобы достичь этого, используя текстуры. Однако на некоторых графических картах я столкнулся с проблемами (точнее, графическими картами виртуальной машины).
Некоторые изображения превышают GL_MAX_TEXTURE_SIZE
, и если карта не поддерживает текстуры, которые не являются сила двух (gl.isNPOTTextureAvailable()
)
Затем я следовал несколько (1, 2) образцы, которые используются glDrawPixels для визуализации изображения непосредственно.
gl.glBlendFunc (GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);
gl.glEnable (GL.GL_BLEND);
gl.glColor3f (0.0f, 0.0f, 0.0f);
gl.glRasterPos2i (10, 300);
gl.glDrawPixels (dukeWidth, dukeHeight,
gl.GL_RGBA, gl.GL_UNSIGNED_BYTE,
dukeRGBA);
Это прекрасно работает, за исключением случаев, когда растровое положение перемещается за пределы области просмотра. Когда часть изображения (нижний левый угол) выходит за пределы области просмотра, все изображение не отображается.
[1] https://today.java.net/pub/a/today/2003/09/11/jogl2d.html
мне удалось решить изображение исчезающего проблемы путем замены glRasterPos2i
с glWindowPos2d
но опять же это приведет к другому problemn - glWindowPos2d
поддерживается только с OpenGL 1.4 и мои виртуальные машины поддерживают только 1.1.
Что не так с моим подходом?
Должен ли я передавать изображения, не имеющие размера, путем заполнения текстур?
Должен ли я разбивать большие изображения на многие текстуры (например, на одеяло), чтобы максимальный размер текстуры не превышал? беспокоясь о производительности в этом случае.
Tried Mesa3D для обеспечения более высокой версии openGL, но не может скомпилировать его для окон. Рекомендуются ли какие-либо другие средства визуализации программного обеспечения? (ожидание поддержки Swiftshader)
Все эти вещи, которые вы пытаетесь использовать, устарели! Переключитесь на современный OpenGL. –
Btw, с Mesa у вас есть доступ к GL 3.2 –
@MichaelIV - спасибо за ваш комментарий. Как бы вы визуализировали изображение с использованием современного OpenGL? Что касается Mesa, мне нужно будет скомпилировать Mesa для окон, которые я так и не смог сделать до сих пор. Это, похоже, ставит вопрос о том, следует ли мне это использовать или нет. Я просто хочу загрузить готовый драйвер/dll, и, похоже, нет места для его получения, что заставляет меня казаться, что мой подход широко не используется. – Leon