Как создать окно рендеринга в реальном времени с нуля? - PullRequest
1 голос
/ 23 января 2012

Я уже некоторое время изучаю трехмерную графику самостоятельно и хочу лучше понять, как все работает. Я хотел бы создать простую игру без использования DirectX или OpenGL. Я понимаю большую часть математики, в которую верю, но проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как получить контроль над пикселями, отображаемыми в окне.

Как мне указать, какой цвет должен быть у каждого пикселя в моем окне?

Я понимаю, что, вероятно, у меня возникнут проблемы с буферами и сдвигом изображений, а также, возможно, возникнут ужасные проблемы с эффективностью, но я хочу создать свою собственную программу, чтобы на самом низком уровне языка высокого уровня я мог видеть, как происходит рендеринг. процесс работает. Я действительно понятия не имею, с чего начать. Я выяснил, как выводить BMP, но мне бы хотелось, чтобы работающая программа выплевывала более 20 кадров в секунду. Как мне это сделать?

Ответы [ 3 ]

0 голосов
/ 24 января 2012

Вы можете выбрать среду, которая позволяет заполнять массив значениями для пикселей и отображать его как растровое изображение.Таким образом, вы ближе всего подсовываете значения RGB в видеопамяти.WPF, Silverlight, HTML5 / Javascript могут сделать это.Если вы не используете полноэкранный режим, этих технологий на данный момент должно хватить.

В WPF и Silverlight используйте WriteableBitmap.

В HTML5 используйтеcanvas

Тогда вам нужно реализовать логику для рисования линий, окружностей, кривых Безье, трехмерных проекций.

Это очень весело, и вы многому научитесь,

0 голосов
/ 11 апреля 2013

Вы говорите, что хотите создать какой-то движок рендеринга, то есть создать собственные классы Pipeline и matrice. Который вы должны использовать для преобразования 3D-координат в 2D-точки.

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

Я не знаю, зачем вам нужны растровые изображения, но если вы хотите попрактиковаться в текстурировании, вы также можете сделать это самостоятельно, хотя, конечно, на слабом компьютере это может значительно увеличить ваши кадры в секунду.

Если вы стремитесь понять, как работает рендеринг на самом низком уровне. Без сомнения, это хорошая практика.

Jt Schwinschwiga

0 голосов
/ 24 января 2012

Я читаю между строк, что вас больше интересует полный контроль над процессом рендеринга с низкого уровня, а не особый интерес к тому, как этого добиться на одной конкретной платформе.

Если это так, то вы, вероятно, получите хорошую отдачу, глядя на такую ​​библиотеку, как SDL , которая предоставляет вам буфер кадров, который вы можете визуализировать напрямую, но абстрагируетемного проблем, связанных с платформой.Он существует уже довольно давно, и есть несколько хороших учебников, которые дадут вам представление о том, что вы ищете, - посмотрите этот учебник и последующий в той же серии,этого должно быть достаточно, чтобы вы смогли начать работу.

...