Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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.012 c
8-1122288108
Adler
2005-07-25 14:41
2006.01.15
_ Delphi и AVI


2-1135592947
john_mag
2005-12-26 13:29
2006.01.15
DateTimePicker


2-1135751571
Bratskiy
2005-12-28 09:32
2006.01.15
Использование неопределёного числа параметров в процедуре


2-1135376569
Lokk
2005-12-24 01:22
2006.01.15
Работа с датами


14-1134830371
Nic
2005-12-17 17:39
2006.01.15
Воскрешаю старый проект :)





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