|
|
|
Канал Игры Мечты: «HELP кто знает GL» |
|
|
himem
210 EGP
  Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
glGenTextures(1, &texID);
glBindTexture(GL_TEXTURE_2D, texID);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, type, width, height, 0, type, GL_UNSIGNED_BYTE, imageData);
//gluBuild2DMipmaps(GL_TEXTURE_2D, type, width, height, type, GL_UNSIGNED_BYTE, imageData);
Почему glTexImage работает а gluBuild2DMipmaps нет ( вернее - возвращает 0 ( типа всё ОК ) а на следующей команде (return) коруптится (This code has called into another function.When that function is finished,this is the next ststement that will be executed. ) c надписью Unhandled exception at 0x69336532 in demo.exe: 0xC0000005: Access violation reading location 0x00000000.
Плиз, кто может - поможите, а то я уже всю голову сломал
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
Kalarin
220 EGP
  Репутация: 21 Сообщения: 883
Зарегистрирован: 15.06.2003
 |
|
Access violation - испорченный стек наверное. Приведи полный текст функции, можно мейлом.
Хмм..
The gluBuild2DMipmaps function creates 2-D mipmaps.
int gluBuild2DMipmaps( GLenum target, GLint components,
GLint width, GLint height, GLenum format,
GLenum type, const void *data );
Parameters
target - The target texture. Must be GL_TEXTURE_2D.
components - The number of color components in the texture. Must be 1, 2, 3, or 4.
width, height - The width and height, respectively, of the texture image.
format - The format of the pixel data. Must be one of the following: GL_COLOR_INDEX, GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_RGB, GL_RGBA, GL_BGR_EXT, GL_BGRA_EXT, GL_LUMINANCE, or GL_LUMINANCE_ALPHA.
type - The data type for data. Must be one of the following: GL_UNSIGNED_BYTE, GL_BYTE, GL_BITMAP, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT, or GL_FLOAT.
data - A pointer to the image data in memory.
У тебя я смотрю components и format - одинаковы. Разве это верно? Судя по :
---------gl.h--------------
/* PixelFormat */
#define GL_COLOR_INDEX 0x1900
#define GL_STENCIL_INDEX 0x1901
#define GL_DEPTH_COMPONENT 0x1902
#define GL_RED 0x1903
#define GL_GREEN 0x1904
#define GL_BLUE 0x1905
#define GL_ALPHA 0x1906
#define GL_RGB 0x1907
#define GL_RGBA 0x1908
#define GL_LUMINANCE 0x1909
#define GL_LUMINANCE_ALPHA 0x190A
----------------------------
наверняка нет. Странно, что у тебя пред.функция работает. Там поле format у тебя так же неверно заполнено.
|
|
|
himem
210 EGP
  Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
У мну (в офиц переводе 3-го изд РедБука) написано internalFormat(components ) может быть равен GL_RGBA и format - тож(кста - чёто у тя в components - 1,2,3,4 и всё? У меня 1,2,3,4 и ищо 38 переменных ) и GLU 1.3
кусок сорца отправляю
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
Kalarin
220 EGP
  Репутация: 21 Сообщения: 883
Зарегистрирован: 15.06.2003
 |
|
Моя инфа - MSDN от Visual Studio.NET. Я конечно не знаю, на чем ты пишешь, но различия оччень странны. Я специально залез в gl.h - MSDN не соврал. А на чем интерестно ты действительно это пишешь?
|
|
|
himem
210 EGP
  Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
Цитата: |
А на чем интерестно ты действительно это пишешь?
|
VC.NET2003 - тока он у мя без мсдна.
А пользуюсь:
OpenGL.Офиц. руководство программиста. Ву,Нейдер,Девис,Шрайнер Third Edition
OpenGL.Официальный справочник. Дейв Шрайнер Third Edition
Издано - ООО"ДиаСофт" 2002г. (www.diasoft.kiev.ua) - тока я не на сайте покупал ( в магазине достались... случайно )
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
Ur Quan
510 EGP
      Рейтинг канала: 1(5) Репутация: 86 Сообщения: 728 Откуда: Арк-а-Зной Зарегистрирован: 25.11.2003
 |
|
Странно у меня вот такая констукция работает:
glGenTextures( Length(TexObj), @TexObj);
glBindTexture( GL_TEXTURE_2D, TexObj[TextureNumber]);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, biWidth, biHeight, GL_RGBA, GL_UNSIGNED_BYTE, DataA);
Была проблема с gluBuild2DMipmaps, пока не разобрался, что в дельфовых заголовках она неправильно описана (один в один соответствует gluBuild1DMipmaps):
function gluBuild2DMipmaps (target: GLenum; components, width: GLint; format, atype: GLenum; data: Pointer): Integer; stdcall;
вместо:
function gluBuild2DMipmaps(Target: GLenum; Components, Width, Height: GLint; Format, atype: GLenum; Data: Pointer): GLint; stdcall;
_________________ Рад видеть тебя на борту. Здесь Дом Свободы — можешь плевать на ковер и называть кота ублюдком. |
|
|
himem
210 EGP
  Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
2Ur Quan
Легче не стало - пробовал и с glu 1.1 и 1.3 - всё верно описано
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
Ur Quan
510 EGP
      Рейтинг канала: 1(5) Репутация: 86 Сообщения: 728 Откуда: Арк-а-Зной Зарегистрирован: 25.11.2003
 |
|
А у тебя какой тип данных (Type) GL_RGB или GL_RGBА?
Может у тебя данных в imageData меньше чем запрашиваешь?
Напр. imageData = width * height * 3 т.е. GL_RGB, а пытаешься прочитать GL_RGBА т.е. imageData = width * height * 4?
_________________ Рад видеть тебя на борту. Здесь Дом Свободы — можешь плевать на ковер и называть кота ублюдком. |
|
|
himem
210 EGP
  Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
2Ur Quan
Вроде как 512*512*4=1048576 байт - т.е. GL_RGBA - всё прально
Тока auxDIBImageLoad(из GLAUXа) читает в GL_RGB( как я понял) потом енто дело преобразуется из GL_RGB(512*512*3) в GL_RGBA(512*512*4) простым чтением из одной области памяти в другую, выделенную malloc(512*512*4) так : пересылка 3 байт, пересылка NULL, пересылка след. трёх байт, и т.д. ЭТО ВАЩЕ ДОЛЖНО РАБОТАТЬ? И как узнать размер данных расположенных по *imageData ( или после чтения из файла) - что ли 512*512*ColorRange?
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
Dark Archon
231 EGP
   Репутация: 56 Сообщения: 389 Откуда: Moscow Federation Зарегистрирован: 27.05.2004
 |
|
Такая кака точно случается, когда вместо GL_RGB используется GL_RGBA и именно по тому, что компонентов цвета меньше чем указано. Однако, при таком раскладе вылетает и первая функция. В общем - проблемная проблема... Сколько раз пользовался этими функциями - ни разу проблем не возникало.
Пока могу посоветовать попробовать 2 вещи:
1) не использовать RGBA
2) не использовать auxDIBImageLoad, а написать свою читалку файлов.
P.S. А какая связь с КИМ?
_________________ o
_/0\_
< > КУ! |
|
|
himem
210 EGP
  Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
2Dark Archon
Прамблема не в написании читалки - она проще - де взять формат BMP Попалось чёто от делфя - 8 бит ONLY и с фразой "в 24 битах может и не быть карты цветов"
Можт у тя е формат ВМР - выручишь очень
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
Ur Quan
510 EGP
      Рейтинг канала: 1(5) Репутация: 86 Сообщения: 728 Откуда: Арк-а-Зной Зарегистрирован: 25.11.2003
 |
|
Цитата: |
пересылка 3 байт, пересылка NULL, пересылка след. трёх байт, и т.д. ЭТО ВАЩЕ ДОЛЖНО РАБОТАТЬ?
|
Ага. Только наверно не "NULL" а "255".
"0" - точка полностью прозрачна.
"255" - точка не прозрачна.
Для использования GL_RGBA нужно грузить *.TGA (32 битный формат) файлы, для *.BMP или *.JPG запонять 4 байт самому (*.JPG полюбому 24 бита на точку, а *.BMP с другим количеством цветов не использую, заморочек меньше).
Т.е. :
ImageSize := width * height;
For I := 0 to ImageSize - 1 do
Begin
DataA [I * 4] := Data [I * 3]; // перебрасываем данные
DataA [I * 4 + 1] := Data [I * 3 + 1];
DataA [I * 4 + 2] := Data [I * 3 + 2];
DataA [I * 4 + 3] := 255; //прозрачность.
End;
Есть дельфиновый модуль для загрузки *.BMP, *.JPG, *.TGA текстур от Jan Horn.
Вот очень полезный ресурс: http://pmg.org.ru/russian/nehe/index.html
(исходники на сях).
_________________ Рад видеть тебя на борту. Здесь Дом Свободы — можешь плевать на ковер и называть кота ублюдком. |
|
|
Dark Archon
231 EGP
   Репутация: 56 Сообщения: 389 Откуда: Moscow Federation Зарегистрирован: 27.05.2004
 |
|
himem : |
2Dark Archon
Прамблема не в написании читалки - она проще - де взять формат BMP Попалось чёто от делфя - 8 бит ONLY и с фразой "в 24 битах может и не быть карты цветов"
Можт у тя е формат ВМР - выручишь очень
|
А зачем тебе формат BMP? Я пользуюсь JPG, RAW или всякими пэкаджами, содержащими много текстур этих форматов в одном файле. Начни с RAW, он очень простой, точнее это вообще не формат, а массив, содержащий цветовые составляющие в том или ином порядке. Можно сконвертировать любой прогой, но рекомендую IrfanView (мааленькая, но паверфульная весч). Простейшую функцию для чтения RAW я выслал тебе на мыло. Но если тебе очень хочется читать BMP или что другое - в интернете можно найти все, что душе угодно. Заходишь в google, пишешь BMP file format и получаешь мильён ссылок.
_________________ o
_/0\_
< > КУ! |
|
|
himem
210 EGP
  Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
2Ur Quan
Пасиба за ссылку!
2Dark Archon
Цитата: |
А зачем тебе формат BMP?
|
Да я нашёл исходник один - вот ковыряюсь теперь
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
|
|
|
Канал Игры Мечты: «HELP кто знает GL» |
|