Форум: "Игры";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];
ВнизТекстура Найти похожие ветки
← →
Зм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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.014 c