Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.18;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.011 c
14-1124836056
ArMellon
2005-08-24 02:27
2005.09.18
Проект .lazarus как бесплатная альтернатива делфи


14-1125128856
redlord
2005-08-27 11:47
2005.09.18
win 2003 server + mssql 2005 server


14-1124952185
DVM
2005-08-25 10:43
2005.09.18
Странный знак на банкноте 100$


3-1120393111
serguncho
2005-07-03 16:18
2005.09.18
Как правильно установить FireBird сервер?


1-1125298174
Cati
2005-08-29 10:49
2005.09.18
Кнопка





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский