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

Вниз

Текстура   Найти похожие ветки 

 
Зм1й ©   (2005-08-03 18:59) [0]

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


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

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

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


 
Зм1й ©   (2005-08-03 19:21) [2]

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

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


 
A22 ©   (2005-08-03 19:44) [3]

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


 
Зм1й ©   (2005-08-03 20:04) [4]


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

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

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

GeForce4


 
XProger ©   (2005-08-03 20:35) [5]

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


 
Зм1й ©   (2005-08-03 21:23) [6]

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

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;


 
ViK ©   (2005-08-03 22:20) [7]

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


 
XProger ©   (2005-08-03 22:25) [8]

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


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

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


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

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


 
MeF Dei Corvi ©   (2005-08-04 17:07) [11]


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

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


 
XProger ©   (2005-08-04 22:49) [12]

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


 
A22 ©   (2005-08-05 11:01) [13]

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


 
grouzd[E]v ©   (2005-08-05 11:36) [14]

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


 
XProger ©   (2005-08-05 12:17) [15]

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


 
A22 ©   (2005-08-05 13:19) [16]

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

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


 
grouzd[E]v ©   (2005-08-05 14:15) [17]

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


 
MeF Dei Corvi ©   (2005-08-05 14:42) [18]


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

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

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


 
XProger ©   (2005-08-05 18:34) [19]

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



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

Текущий архив: 2006.01.15;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.048 c
3-1132467009
AleQ
2005-11-20 09:10
2006.01.15
База в Delphi 8


2-1135419616
SergP.
2005-12-24 13:20
2006.01.15
TChart. Нужно отображать значения BottomAxis в формате даты/


2-1135325317
bva
2005-12-23 11:08
2006.01.15
Отключить программно Ctrl+Alt+Del


6-1127965848
VolanD666
2005-09-29 07:50
2006.01.15
Проблема передачи файлов


14-1134707455
КаПиБаРа
2005-12-16 07:30
2006.01.15
Почему процветает модель разработки "Тяп ляп"?