Отображение 100 Плавающие Кубики Использование DirectX ИЛИ OpenGL

голоса
13

Я хотел бы, чтобы отобразить 100 плавающих кубов , используя DirectXили OpenGL.

Я ищу либо какой-то исходный образец кода, или описание метода. У меня есть проблемы с получением еще один кубик, чтобы правильно отобразить.

Я прочесал сеть для хорошей серии учебных пособий и хотя они говорят о том , как сделать 3Dпримитивы, что я не могу найти информацию о том , как сделать большое количество 3Dпримитивов - cubes, spheres, pyramidsи так далее.

Задан 04/08/2008 в 07:51
источник пользователем
На других языках...                            


3 ответов

голоса
7

Вы говорите, что у вас есть достаточно проблем, получая один кубик, чтобы отобразить ... так что я не уверен, что если у вас есть один, чтобы отобразить или нет.

В основном ... поместить свой код для написания куба в одной функции, то просто вызов этой функции в 100 раз.

void DrawCube()
{
    //code to draw the cube
}

void DisplayCubes()
{
    for(int i = 0; i < 10; ++i)
    {   
         for(int j = 0; j < 10; ++j)
         {
             glPushMatrix();
             //alter these values depending on the size of your cubes.
             //This call makes sure that your cubes aren't drawn overtop of each other
             glTranslatef(i*5.0, j*5.0, 0);
             DrawCube();
             glPopMatrix();
         }
    }              
}

То есть основная схема для того, как вы могли бы идти об этом. Если вы хотите что-то более эффективное, посмотри в списки Display когда-то, как только вы основа разобралась :)

Ответил 04/08/2008 d 10:12
источник пользователем

голоса
6

Да, если вы были эффективными вы бы бросить все в тот же буфер вершин, но я не думаю, что рисунок 100 кубов будет толкать любой GPU, полученный в течение последних 5 лет, так что вы должны быть в порядке, выполнив описанные выше предложения.

Написать основной проход через вершинный шейдер, тень, однако вы хотите в пиксельном шейдере. Либо перейти в мировой матрице и сделать перевод в вершинном шейдере, или просто вычислить мировые позиции пространства вершин на стороне центрального процессора (это сделать, если ваши кубики будут оставаться неподвижными).

Вы можете получить фантазии и сделать геометрию инстансов и т.д., но только получить основы идти первым.

Ответил 19/08/2008 d 12:12
источник пользователем

голоса
6

Просто используйте glTranslatef (или эквивалент DirectX), чтобы нарисовать куб, используя один и тот же код, но движущуюся относительную точку, где вы рисуете его. Может быть, есть лучший способ сделать это, хотя, я довольно новый для OpenGL. Не забудьте установить свою точку зрения, так что вы можете увидеть их все.

Ответил 04/08/2008 d 10:04
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more