Как нарисовать растровое изображение с точки зрения? - PullRequest
0 голосов
/ 07 июня 2009

Мне нужно нарисовать растровое изображение Windows с точки зрения, например:

альтернативный текст http://img410.imageshack.us/img410/3905/example.png

только с использованием функций Windows API C (без MFC, без DirectX и т. Д.)

Ответы [ 2 ]

1 голос
/ 07 июня 2009

Если вы не можете использовать OpenGL (или Direct3D), то вам, вероятно, придется написать свой собственный растеризатор. Я также хочу подчеркнуть, что это ужасная идея, и если вы можете использовать OpenGL или Direct3D, вы сэкономите огромную работу, даже если вам действительно трудно заставить эти вещи работать с вашим приложением. Да, вы можете использовать OpenGL или Direct3D для рендеринга в текстуру без создания экранного контекста.

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

Как только ваши 3D-точки преобразуются в 2D-точки с помощью преобразования перспективы, вы рисуете многоугольник, копируя пиксели из вашей текстуры в целевой контекст. Вы захотите пройтись по каждому пикселю в месте назначения и вычислить, какой исходный пиксель заканчивается там. Если он будет вращаться только вокруг оси X, как это показано на рисунке, тогда вам будет намного проще, поскольку каждая строка в месте назначения соответствует строке в источнике. Вольфенштейн использовал тот же трюк (кроме оси Y) для рендеринга перспективы в реальном времени на 286, как и Doom.

Если вы все еще хотите продолжить, но не знаете, что я говорю, найдите одну из тех старых книг, в которой рассказывается, как сделать свой собственный Doom-клон. Эти книги имеют код, который вы ищете. Один или два теперь доступны онлайн, перейдите на эту вики и найдите «Черное искусство программирования 3D-игр» или «Уловки гуру программирования игр Windows». Один или два других могут быть там.

0 голосов
/ 07 июня 2009

Реализуйте этот алгоритм .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...