{{notification.text}}

MirGames

devi409
23.03.09 11:14
0
Люди добрые подскажите пожалуста как можно ускорить вывод графики?
Может есть какие либо настройки OpenGL?
ведь как то пишут движки которые работают очень быстро даже если количество итераций зашкаливает за 10 тыс
и еще вопрос.
Сталкнулся вот с такой проблемой. Вывожу ланшавт треугольниками использую простейший цикл
for i:=1 to 100 do
for j:=1 to 100 do
begin
{Сдесь код вывода треугольника по координатам из массива mas[i,j,z]}
end;

дак вот если я буду выводить не до 100 а к примеру 105 то появляются артефакты. какието появляющиеся и исчезающие треугольники причем очень странно, я вычисляю высоту камеры в зависимости плоскости по трем точкам дак если надо мной внезапно появится треугольник камера сразу взмывает вверх такое чувство что в массиве величина Z изменяется а потом возвращается на свое исходное состояние.
Ведь 10000 треугольников это не так много.
Отредактировано: 23.03.09 11:16
#1
23.03.09 12:26
0
VertexBufferObject , поддерживается еще со MX200 вроде
#2
23.03.09 13:03
0
Цитата
VertexBufferObject , поддерживается еще со MX200 вроде

+тотальное уменьшение DIPов (порций вывода на экран).
В идеале вся выводимая графика должна умещаться в один дип.
В реале - до 200.
#3
23.03.09 13:04
0
Почитай про glDrawElements и VBO, да.
Что за артефакты, так и не понял.
#4
devi409
23.03.09 13:24
0
артефакты это появляющиеся и исчезающие произвольные треугольники. в любом месте экрана с наложеной на них текстурой к (примеру травы)
чем больше треугольников тем больше таких артефактов.
замечал закономерность если видеокарта мощная то артифакты появляются только после 25 тыс треугольников если слабая то уже на 10 тыс артефакты
а функция glDrawElements поддерживает вывод текстур? тоесть вызовом этой одной функции я так понимаю ресуются сразу тыша треугольников а если у них у всех разные текстуры то как быть?
очень хотелось бы найти документацию по VertexBufferObject но что то не получается...
как его едят и счем?
и что такое DIP?
Отредактировано: 23.03.09 13:43
#5
23.03.09 14:03
0
DIP - это вызов рисования.
да текстуре "пофиг" она рисуется после обработки вертексов...
НА ЭТОМ САЙТЕ ЕСТЬ ПРО вбо прям так и называется статья)))вроде...
аналисинг нужен наверное.....
#6
23.03.09 14:11
0
Цитата
тоесть вызовом этой одной функции я так понимаю ресуются сразу тыша треугольников а если у них у всех разные текстуры то как быть?

Например, можно сгруппировать треугольники по текстурам. И каждую такую группу с одинаковой текстурой рисовать glDrawElements. Или засунуть все эти текстуры в одну большую.
Отредактировано: 23.03.09 14:13
#7
devi409
23.03.09 14:20
0
нифигасе... глобально... скомпоеновать сначала одни треугольники потом другие...
а если я загружаю объекты из файла OBJ единственной проценудой отрисовки типа drawobj(nom) где nom - номер модели загруженный ранее. то как быть в этом случае?
#8
23.03.09 14:39
0
devi409
Я бы рисовал одну модель с одной текстурой одним вызовом glDrawElements. Про obj ничего не знаю, может кто ещё подскажет.
#9
devi409
23.03.09 14:56
0
спасибо за наводку... будем искать.
#10
23.03.09 15:30
0
мультитекстуринг + шейдер))))
#11
23.03.09 16:06
0
Как показывает практика в 3д играх редко более 50 текстур на экране ) Так что по идее это всё можно вызвать 50ю дипами. Для рельефа я делал одну большую текстуру с 64 впечеными в неё текстурами. Весь рельеф у меня отрисовывался за один дип.
#12
23.03.09 21:12
0
Woolf ну а если очочочочень сложная модель с 10 тектурами....хочется сохранить их качество(1024*1024) и "быструю" отрисовку)))хотя такая модль это мегамонстр)))гыг))
#13
23.03.09 23:11
0
Цитата
ну а если очочочочень сложная модель с 10 тектурами.

Я вот, честно говоря, частенько копаюсь в играх по ресурсам, смотрю как там что сделано, вот скажу - больше 2х текстур на модели не видел. Обычно одна, изредка две текстуры.
#14
24.03.09 00:25
0
ну три четыре максимум я и сам понимаю)))ну а вдруг)))тем более если есть взможность)))
#{{post.Index}}
{{post.Author.Login}}
{{post.CreatedDate | date:'dd.MM.yy HH:mm'}}
{{post.VotesRating}}
Отредактировано: {{post.UpdatedDate | date:'dd.MM.yy HH:mm'}}