Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Текстура [Delphi, Windows]


Зм1й ©   (2005-08-03 18:59:00) 

Мастера, подскажите пожалуста, как создать нормальную текстуру 1024*1024 в OpenGL, а то у меня она вся чёрная с шумами :(
Может какой флаг надо поставить?


XProger   (2005-08-05 18:34:00) [1]

Человек пропал куда-то...


MeF Dei Corvi   (2005-08-05 14:42:00) [2]


> даешь десятиформатку за два года!

зачем за два года, дней за пять максимум...

кстати, а человеку-то так и не помогли :) а уже холиварить.


grouzd[E]v   (2005-08-05 14:15:00) [3]

Мистическим образом предвижу холивар о "кнопкошлепстве". Народ, не надо, а...
ЗЫ А писать свои загрузчики совсем не вредно имхо


A22   (2005-08-05 13:19:00) [4]

ну так пойдем же в русле архитектурной независимости и напишем каждый код загрузки bmp, tha, jpg, png, dds! даешь десятиформатку за два года!

P.S. nvidia чего-то не смутилась написать библиотеку для загрузки текстур под Win


XProger   (2005-08-05 12:17:00) [5]

A22, OpenGL имеет независимую архитекстуру, если ты не в курсе...


grouzd[E]v   (2005-08-05 11:36:00) [6]

A22 > А мне нравится считать лбом все подводные камни. Поэтому и пишу не на GLScene а на OGL =)


A22   (2005-08-05 11:01:00) [7]

затем чтобы не отвлекаться на загрузку текстур. D3DXCreateTextureFromFile грузит любой формат из тех я лично вообще знаю


XProger   (2005-08-04 22:49:00) [8]

A22, никогда! а зачем?


MeF Dei Corvi   (2005-08-04 17:07:00) [9]


> Мне кажется, что дело не в коде загрузки

Дело тут как раз в коде загрузки, т.к. он кривой :) И судя по всему ты текстуру грузишь каждый кадр... Нафиг?


Зм1й   (2005-08-04 14:06:00) [10]

Мне кажется, что дело не в коде загрузки, а в чём-то другом. Кроме того, при использовании больших текстур в процессе игры часто вылетает "Out of Memory"!


A22   (2005-08-04 11:13:00) [11]

мде, когда же в OpenGL появится аналог D3DXCreateTextureFromFile...


XProger   (2005-08-03 22:25:00) [12]

GetDIBits вроле возвращает массив с ровнением которое обеспечит тебе шикарный сдвиг ;)


ViK   (2005-08-03 22:20:00) [13]

Ну во-первых: че-то я не заметил glGenTextures.
А во-вторых: это конечно глупо, но все-таки попробуй вместо GetDIBits и прочего, использовать ScanLine


Зм1й   (2005-08-03 21:23:00) [14]

Блин, да код то тривиальный

procedure SetTextureFromBmp(Bmp: TBitMap);
type
 PPixelArray= ^TPixelArray;
 TPixelArray= Array[0..0] of Byte;
var
 i: Integer;
 Data: PPixelArray;
 bi: TBitmapInfo;
 TempByte: Byte;
 DC: HDC;
begin
 ZeroMemory(@bi, SizeOf(bi));
 with bi.bmiHeader do begin
   biSize:=sizeof (TBitmapInfoHeader);
   biBitCount:=24;
   biWidth:=bmp.Width;
   biHeight:=bmp.Height;
   biPlanes:=1;
   biCompression:=BI_RGB;
 end;

 DC:=CreateCompatibleDC (0);
 GetMem(Data, bmp.Width*bmp.Height*3);

 GetDIBits(DC, bmp.Handle, 0, bmp.Height, Data, bi, DIB_RGB_COLORS);

 for i:=0 to bmp.Width*bmp.Height-1 do begin
    TempByte:=Data[i*3];
    Data[i*3]:=Data[i*3+2];
    Data[i*3+2]:=TempByte;
 end;

 glTexImage2D(GL_TEXTURE_2D, 0, 3, bmp.Width, bmp.Height, 0, GL_RGB,
              GL_UNSIGNED_BYTE, Data);

 FreeMem(Data);
 DeleteDC(DC);
end;


XProger   (2005-08-03 20:35:00) [15]

Зм1й, код показывай


Зм1й   (2005-08-03 20:04:00) [16]


> либо код загрузки неврен

Код загрузки верен. Кстати, 512 тоже не всегда грузится, а только тогда, когда мало вершин

> что за видео?

GeForce4


A22   (2005-08-03 19:44:00) [17]

либо код загрузки неврен, либо видеокарта не поддерживает текстуры 1024х1024. что за видео?


Зм1й   (2005-08-03 19:21:00) [18]

Извиняюсь, видимо некоректно сформулировал...

Загружаю я текстуру 512*512 к примеру - всё нормально;
загружаю таким же способом текстуру 1024*1024 - она выводится, как я сказал, чёрная


ViK   (2005-08-03 19:17:00) [19]

Что значит создать? В OpenGL можно только загрузить готовую текстуру.

Текстуры создаются либо в графических редакторах, либо вручную в программе (но не в OpenGL).


Наверх

Титульная страница Поиск, карта сайта Написать письмо