我试图通过为像素绘制像素来渲染图像(是的,我知道这不是最有效的,但它更多用于学习目的)并且我得到了一个奇怪的问题,它绘制了这样的白线:{{ 0}}
我使用过滤和视觉工作室2013.这是我的glutinit
:
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH | GLUT_ALPHA); // Double buffering, RGB format
glutInitWindowSize(width, heigth);
glutInitWindowPosition(0, 0);
glutCreateWindow("Test Plaatje");
glClearColor(1.0, 1.0, 1.0, 1.0);
glColor3f(1.0, 1.0, 1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 1024, 0.0, 500);
glMatrixMode(GL_MODELVIEW);
这是我的渲染代码,其中解释了一些变量:
...
std::vector<std::vector<RGB>> _map = std::vector<std::vector<RGB>>();
...
struct RGB
{
int R;
int G;
int B;
};
...
void Map::draw()
{
glBegin(GL_POINTS);
for (float x = 0; x < _w; x++)
{
for (float y = 0; y < _h; y++)
{
RGB pixel = _map[y][x];
glColor3ub(pixel.R, pixel.G, pixel.B);
glVertex2f(_p[0] + x, _p[1] + y);
}
}
glEnd();
}
我已经尝试使用一些小数值来移动像素,但这不起作用。我通过将像素值转储到文件来验证_map
是否正确。作为参考,它应该呈现:
我不知道如何解决这个问题。有人有什么想法吗?
答案 0 :(得分:0)
at.n.提示我添加了glEnable(GL_BLEND); glEnable(GL_POINT_SMOOTH); glHint(GL_POINT_SMOOTH_HINT,GL_NICEST);在我的初始结束时它工作了!
答案 1 :(得分:0)
您可以通过多种方式解决此浮点错误:
Personalny我预先设定了顶点偏移。但如果你打算缩放你的图像,更好的方法是glRect。
如果您正在寻找更严肃的解决方案,则应考虑将您的像素上传到纹理并使用单个四边形绘制它。还可以考虑使用glDrawPixels。