glaux.lib в Visual Studio 2008 - PullRequest
       15

glaux.lib в Visual Studio 2008

2 голосов
/ 19 февраля 2010

Я портирую некоторый код из Visual Studio 2005 в Visual Studio 2008.

Могу ли я использовать glaux.lib из Visual Studio 2005, который находится в папке \ PlatformSDK \ Lib в Visual Studio 2008? Я не хочу менять свои API и имею требование использовать glaux.h

как сказано здесь , это работает

похоже, что glaux.lib устарел. Вместо ссылки на kernel32.lib, user32.lib, gdi32.lib и advapi32.lib

Ответы [ 2 ]

11 голосов
/ 02 июня 2011

Скачать gluax.h с http://www.songho.ca/opengl/files/glaux.h и gluax.lib от http://www.songho.ca/opengl/files/glaux.lib.

Установите путь, и все готово.

2 голосов
/ 16 сентября 2015

AFAIK, большинство программистов пропускают функцию auxDIBImageLoad () , и документированного обходного пути нет. Glaux.lib - это статическая библиотека, в которой представлено некоторое количество кода.

Этот загрузчик изображений будет работать без :

HBITMAP hbm=LoadBitmap(GetModuleHandle(NULL),MAKEINTRESOURCE(1));
if (!hbm) return false;
BITMAP bm;
GetObject(hbm,sizeof bm,&bm);
BITMAPINFO bmi={sizeof bmi,bm.bmWidth,bm.bmHeight,1,
  32};      // 24 = GL_BGR_EXT, 32 = GL_BGRA_EXT; all other fields are 0
DWORD*bits=new DWORD[bm.bmWidth*bm.bmHeight];
GetDIBits(hDC,hbm,0,bm.bmHeight,bits,&bmi,DIB_RGB_COLORS);
...
glTexImage2D(GL_TEXTURE_2D,0,3,bm.bmWidth,bm.bmHeight,0,
  GL_BGRA_EXT,GL_UNSIGNED_BYTE,bits);
...
delete[] bits;
DeleteBitmap(hbm);

Эта процедура будет правильно обрабатывать как RGB (24-битные), так и проиндексированные изображения! Нет необходимости в ручном переплетении пикселей! Пример загружается из ресурса process.exe с числовым идентификатором 1.

LoadBitmap () можно заменить LoadImage () для загрузки из файла.

Если ваше входное изображение известно, что имеет несжатый тип RGB, GetDIBits не требуется, так как вы можете LoadImage () с LR_CREATEDIBSECTION, получить доступ к битам с помощью указателя bmBits и использовать GL_BGR_EXT константа. ( новые и операторы удаления не нужны.)

GetDIBits требуется любой допустимый дескриптор контекста устройства для успеха Используйте GetDC / ReleaseDC, если у вас нет удобной ручки.

Константа GL_BGRA_EXT является расширением Microsoft для opengl, она используется именно для такого вывода GetDIBits.

Загрузка сжатых PNG / GIF / JPG здесь не проверяется, но должна работать аналогично; GetDIBits () - ваш друг.

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

...