Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];

Вниз

OGL+текстура на кваде, трабла   Найти похожие ветки 

 
Sh_Ev   (2005-05-22 11:26) [0]

Помогите, плз. Вообще фигня какая-то. Загружая текстуру так :


Procedure LoadBMPTexture (FileName : string; var Texture : GLUint) ;
var
 i , j  : Glint                              ;
 Bitmap : TBitmap                            ;
 Bits   : array of array of array of GLUbyte ;
begin
 Bitmap:=TBitmap.Create        ;
 Bitmap.LoadFromFile(FileName) ;

 SetLength(Bits,Bitmap.Height);
 for i:=0 to Bitmap.Height-1 do
  begin
    SetLength(Bits[i],Bitmap.Width);
    for j:=0 to Bitmap.Width-1 do
     SetLength(Bits[i,j],4);
  end ;

 for i:=0 to Bitmap.Height-1 do
  for j:=0 to Bitmap.Width -1 do
   begin
     Bits[i,j,0]:=GetRValue(Bitmap.Canvas.Pixels[i,j]) ;
     Bits[i,j,1]:=GetGValue(Bitmap.Canvas.Pixels[i,j]) ;
     Bits[i,j,2]:=GetBValue(Bitmap.Canvas.Pixels[i,j]) ;

     if (Bits[i,j,0]=255) and (Bits[i,j,1]=255) and (Bits[i,j,2]=255) then
      begin
        Bits[i,j,3]:=0;
      end
     else
      Bits[i,j,3]:=1;
   end ;

 glGenTextures(1, Texture);
 glBindTexture(GL_TEXTURE_2D, Texture);
 glTexEnvi(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);

 gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, Bitmap.Width, Bitmap.Height, GL_RGBA, GL_UNSIGNED_BYTE, Bits);

 Finalize(Bits);

 Bitmap.Free ;
end ;


Затем рисую квад с этой текстурой и получаю не нужную мне картинку, а какую-то мешанину пикселей, растянутых на кваде. Текстура 256*256. Следом пытаюсь загрузить другую, побольше, получаю еррор. Причем вылетает именно на gluBuild2DMipmaps. Меняю gluBuild2DMipmaps на glTexImage2D - ничего не вылетает, но ничего и не рисуется - полностью белый квад. Вообще ничего не могу понять. Помогите разобраться, пожалуйста.


 
П7   (2005-05-22 12:59) [1]

Блин, возьми нормальную функцию загрузки текстуры. Файл p7_textre.pas из проекта P7Gfx DLL. Лежит всё тут: http://p7.animka.com/product.php?id=3


 
XProger ©   (2005-05-22 14:16) [2]

Sh_Ev, для начала пойми как устроены динамические массивы! В памяти они хранятся не всегда одним блоком!
Да и подаёшь ты указатель не на данные, а на указатель на массив (@Bits[0]) ибо дин массив по сути - указатель на данные.


 
Sh_Ev   (2005-05-23 06:58) [3]

2 П7 : Неа, так вообще не катит. Уж лучше сам разберусь, а то к чужому WinAPI коду приделывать свое определение альфа-канала по цветовому ключу совсем запариться можно.

2 XProger : Ну да, и что??? Сам массив то у меня правильно заполняется. Так как мне его все-таки передать в процедуру по нормальному???


 
XProger ©   (2005-05-23 13:21) [4]

Ну есть у тебя массив динамический:
Bits - это указатель на данные
Эти данные находятся в памти. Перед строкой Bits[1] может находиться ЧТО УГОДНО! Т.е. не обязательно Bits[0]

Создавай Bits: PByteArray т.е. одномерный массив. И память выделяй ему при помощи GetMem


 
П7   (2005-05-23 14:47) [5]

Я тебя не уговариваю брать чужое апи. Там полный исходник и в нём нормальные функции загрузки текстур. Вот в них разбкрись и напиши аналог свой...



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.012 c
8-1115452586
Киря
2005-05-07 11:56
2005.09.18
Как отследить событие?


3-1123517781
Ruslan D
2005-08-08 20:16
2005.09.18
Просмотр пользователей в Firebird


1-1124909348
Ji
2005-08-24 22:49
2005.09.18
Не получается работать с UTF-8


14-1124721982
ПЛОВ
2005-08-22 18:46
2005.09.18
Поможите, никак не могу разобраться с типами переменных


3-1123140957
-=snoop=-
2005-08-04 11:35
2005.09.18
и все же, как правильно работать с 866 страницей через ADO





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский