невалиден изброител при създаване на 16-битова текстура

Опитвам се да създам 16-битова текстура, за да задържа картата на височината за моите терени, но и двете от следните връщат грешки „невалиден изброител“. Макросът CHECK_GL_ERROR() показва gluErrorString като съобщение и прекъсва, ако glGetError върне нещо различно от GL_NO_ERROR.

CHECK_GL_ERROR( glTexImage2D( GL_TEXTURE_2D, 0, GL_LUMINANCE16, width_, depth_, 0, GL_LUMINANCE, GL_UNSIGNED_SHORT, 0 /*data_.raw_data()*/ ) );
CHECK_GL_ERROR( glTexImage2D( GL_TEXTURE_2D, 0, GL_ALPHA16, width_, depth_, 0, GL_ALPHA, GL_UNSIGNED_SHORT, 0 /*data_.raw_data()*/ ) );

Имам създадена текстура, обвързана с целта GL_TEXTURE_2D, и имам същата грешка със и без:

glPixelStorei( GL_UNPACK_ALIGNMENT, 2 );

Използвам контекст OpenGL 3.2, NVIDIA CUDA dev драйвери 286.16 на GTX 560Ti. Може ли някой да види какво правя грешно?

наздраве


person PsychoLogic    schedule 20.02.2012    source източник


Отговори (1)


Ако използвате основен контекст, това трябва да се очаква. Вече няма GL_LUMINANCE или GL_ALPHA формати за изображения.

Ако искате да имулирате ефекта от тях, трябва да създадете едноканален формат на изображението. Така че GL_R16 трябва да бъде вашият вътрешен формат. След това настройте текстурна въртяща се маска върху текстурния обект, така че единичният червен канал да бъде излъчвайте към RGB или Alpha, както сметнете за добре.

Наистина е по-добре така.

person Nicol Bolas    schedule 20.02.2012
comment
Фантастично, благодаря :) Тъй като сега е ясно, страниците с ръководство на OpenGL, които използвах, не са актуални с най-новите спецификации, има ли подобна препратка, която обхваща новото ядро ​​и спецификации за съвместимост? - person PsychoLogic; 20.02.2012
comment
@PsychoLogic: Ако говорите за тази препратка, те изрично казват, че повторно за 2.1. Справочникът за ядрото 4.2 е достъпен в Wiki или на уебсайта. Имайте предвид, че това е само ядро; спецификациите за съвместимост не са обхванати. - person Nicol Bolas; 20.02.2012