VD-Flash Ответов: 1

Как использовать растровое изображение из ресурса приложения в качестве текстуры opengl?


Здравствуйте, читатели. Здесь я столкнулся с другой проблемой. Я изучал программирование на Win32 и OpenGL. Я обнаружил, что растровые изображения могут храниться в скриптах ресурсов для легкого и быстрого доступа. Я также знаю, как создать текстуру в OpenGL, загрузив изображение из файла. Но можем ли мы сгенерировать текстуру OpenGL из изображения в скриптах ресурсов? Пожалуйста, дайте мне знать, если кто - нибудь из вас, ребята, знает код для этого. Спасибо за чтение.

Что я уже пробовал:

Поиск в Google давал много ответов, но ни один из них не был подходящим и легким.

1 Ответов

Рейтинг:
12

Rick York

Если вы знаете, как загрузить файл и сделать из него полезную текстуру, то вы почти полностью там. Чтобы получить доступ к ресурсу текстуры, вызовите LoadBitmap. Затем выполните те же действия, что и с текстурой файла. Оба метода должны привести к созданию HBITMAP, который может использовать OpenGL.

Если это описание слишком расплывчато, то, надеюсь, этот пример приложения может помочь : 50 проектов OpenGL Win32 в одном[^]


VD-Flash

Спасибо Вам за приведенную выше ссылку. Это будет очень полезно для меня. Но, как вы сказали выше, я могу загрузить изображение с помощью LoadBitmap, получить дескриптор HBITMAP и преобразовать его в текстуру, как я это регулярно делаю. Но является ли тип данных HBITMAP приемлемым для glTexImage2D? Потому что я обычно загружаю изображение из файла, используя предварительно построенную библиотеку stb_image, которая возвращает тип данных unsigned char*, который может быть использован в последнем параметре glTexImage2D.

Rick York

Взгляните на эту функцию : https://docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-getbitmapbits

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

VD-Flash

Спасибо за ссылку. Это прекрасно работает. 😀

Rick York

Пожалуйста, не забудьте отметить свой вопрос как "ответ", чтобы он был удален из активного списка.

VD-Flash

ОК