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

Этот класс может сделать трюк, он преобразует объект в стандартный json.

import json


class Serializer(object):
    @staticmethod
    def serialize(object):
        return json.dumps(object, default=lambda o: o.__dict__.values()[0])

use:

Serializer.serialize(my_object)

работает в python2.7 и python3.

16
задан Scath 4 April 2018 в 19:18
поделиться

3 ответа

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

7
ответ дан 30 November 2019 в 22:10
поделиться

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

Запись основная передача через вершинный шейдер, заштрихуйте однако, Вы требуете в пиксельном шейдере. Или передача в мировой матрице и делает перевод в вершинном шейдере или просто вычисляет мировые позиции вершины пространства относительно стороны ЦП (сделайте это, если Ваши кубы собираются остаться зафиксированными).

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

6
ответ дан 30 November 2019 в 22:10
поделиться

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

В основном... помещает Ваш код для записи куба в одной функции, затем просто вызывают ту функцию 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();
         }
    }              
}

, Который является основной схемой для того, как Вы могли пойти о выполнении этого. Если Вы хотите что-то более эффективное, смотрят в Дисплейные списки когда-то, после того как Вам выяснили основы :)

8
ответ дан 30 November 2019 в 22:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: