Форум: "Игры";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
ВнизКосяки с выводом фона. Найти похожие ветки
← →
Kobik (2004-07-15 18:49) [0]Начал изучать d3d по Краснову и вдруг такая проблема:
Использую полноэкранный режим.
На экран выводятся несколько объектов - текстуры наложеные на пары треугольников. FPS = 60.
Но вместе с фоном фпс сильно падает. Фон представляет собой размноженные тесктуры 128*128.
Пробовал делать двумя способами
1) четыре вершины образуют прямоугольник 1024*768. Если на него натянуть одну текстуру, то фпс остается порядка 60, но если размножить текстуры без растяжения, то фпс=12-15.
2) Создаю набор из 48 квадратов 128*128 и на каждый натягиваю текстуру. фпс=20.
Что я не так делаю?
← →
cyborg © (2004-07-15 18:56) [1]Подозрительно как-то это всё. Как ты размножаешь текстуру, напр. х1=-5 у1=-5 х2=5 у2=5?
← →
Kobik (2004-07-15 19:22) [2]Первый способ:
Vertices.X := -1;
Vertices.Y := -1;
Vertices.Z := 0;
Vertices.U := 0;
Vertices.V := 0;
Inc(Vertices);
Vertices.X := -1;
Vertices.Y := 1;
Vertices.Z := 0;
Vertices.U := 6;
Vertices.V := 0;
Inc(Vertices);
Vertices.X := 1;
Vertices.Y := -1;
Vertices.Z := 0;
Vertices.U := 0;
Vertices.V := 8;
Inc(Vertices);
Vertices.X := 1;
Vertices.Y := 1;
Vertices.Z := 0;
Vertices.U := 6;
Vertices.V := 8;
FD3DVB.Unlock;
with FD3DDevice do
begin
SetTexture(0, back);
SetTextureStageState(0, D3DTSS_COLOROP, D3DTA_TEXTURE);
end;
FD3DDevice.DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
Второй способ:
with FD3DDevice do
begin
SetTexture(0, back);
SetTextureStageState(0, D3DTSS_COLOROP, D3DTA_TEXTURE);
end;
for i:=0 to 7 do for ii:=0 to 5 do
begin
hRet := FD3DVB.Lock(0, 4 * SizeOf(TCustomVertex), PByte(Vertices), 0);
if Failed(hRet) then begin Result := hRet;Exit;end;
Vertices.X := -1+i*0.25;
Vertices.Y := -1+ii/3;
Vertices.Z := 0;
Vertices.U := 0;
Vertices.V := 0;
Inc(Vertices);
Vertices.X := -1+i*0.25;
Vertices.Y := -1+(ii+1)/3;
Vertices.Z := 0;
Vertices.U := 1;
Vertices.V := 0;
Inc(Vertices);
Vertices.X := -1+(i+1)*0.25;
Vertices.Y := -1+ii/3;
Vertices.Z := 0;
Vertices.U := 0;
Vertices.V := 1;
Inc(Vertices);
Vertices.X := -1+(i+1)*0.25;
Vertices.Y := -1+(ii+1)/3;
Vertices.Z := 0;
Vertices.U := 1;
Vertices.V := 1;
FD3DVB.Unlock;
FD3DDevice.DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
end;
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.041 c