C++ w/ OpenGL Pixel Perfect Plot

Трябва да начертая пиксел върху прозореца според позицията му в пиксели в цели числа, а не плаващи. като например, ако трябваше да начертая 0, 0, това щеше да е най-горният ляв ъгъл на прозореца, 1,1 щеше да е един пиксел вдясно от 0, 0 и 1 пиксел под 0. Предполагам какво необходимо е да бъде нещо като I grid. Не ме интересува дали 0, 0 е произходът, както е нормално, но имам нужда да брои по пиксели, без 1 като максимум и -1 като минимум или каквото и да е друго.

Неща, които вече опитах: Мислех, че мога просто да направя нещо като тази Ширина на прозореца ^-1 * X за чертане и това всъщност върши работа, но не през цялото време. Както и да е, как щях да направя това? Също така направих X позиция / ширина на екрана и това работи най-добре, но спира да работи на всеки 10 или повече пиксела.


person Business Business    schedule 26.03.2013    source източник


Отговори (1)


Първо, OpenGL не гарантира перфектно разположение на пикселите във всички случаи. Има обаче много често срещана грешка: центърът на всеки пиксел няма да има цели числа, ако пикселните координати.

Ето диаграма на долния ляв пиксел в прозорец за изглед на OpenGL.

+Y
^
|     
+-----+
|     |
|  o  |
|     |
+-----+---> +X

Ако данните ви се трансформират така, че всеки пиксел да има ширина и височина 1 единица, тогава центърът на пиксела е на (0.5, 0.5). Ако начертаете GL_POINT в този пиксел, координатите трябва да бъдат (0.5, 0.5). Ако начертаете правоъгълник, той ще премине от (0,0) до (1,1). Ако начертаете вертикална линия през нея, линията трябва да има x-координата 0,5.

И така нататък.

person Dietrich Epp    schedule 26.03.2013