我能够使用OpenGL绘制一条线,产生以下结果:
然而,与我的游戏的像素化风格相比,这条线看起来平滑且不合适。我希望看起来更像这样的结果:
有人可以给我一些提示,告诉我如何让OpenGL绘制这样的像素化线?
这是我的renderLine()方法(使用立即模式,我很害怕):
public static void renderLine(float x1, float y1, float x2, float y2,
float thickness, float[] colour) {
// Store model matrix to prevent contamination
glPushMatrix();
// Set colour and thickness
glColor4f(colour[0], colour[1], colour[2], colour[3]);
glLineWidth(thickness);
// Draw line
glBegin(GL_LINES);
{
glVertex2f(x1, y1);
glVertex2f(x2, y2);
}
glEnd();
// Restore previous state
glColor4f(1, 1, 1, 1);
glLineWidth(1.0f);
glPopMatrix();
}
答案 0 :(得分:3)
OpenGL中没有内置任何内容来绘制这些行。
您可以绘制一个包含线条中像素的紧凑四边形,并使用一个片段着色器来评估要保留哪些像素以及哪些像素被遗漏。
但是,考虑到您希望所有游戏的外观都是像素化的,最好的解决方案是渲染到较小的纹理,然后使用x4(或任何因子)最近邻插值将其blit到屏幕。然后绘制这样的线只会减少到只有GL_LINE
的常规GL_LINE_SMOOTH
。