Я пытаюсь сделать изображение, рисуя его пиксель для пикселя (да, я знаю, что это не самый эффективный, но его больше для учебных целей), и я получил странную проблему, что он рисует белый линии, как это: пиксели рендеринга opengl дают белые линии
Я использую перенасыщение и Visual Studio 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
верен, сбросив значения пикселей в файл. для справки это то, что он должен оказывать:
Я понятия не имею, как это исправить. у кого есть идеи?
Попробуйте следующее: 'glHint (GL_POINT_SMOOTH_HINT, GL_NICEST);' Вы, вероятно, хотите заранее включить смешение: 'glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable (GL_POINT_SMOOTH); 'но я не уверен, какие из них необходимы, а какие нет. Также попробуйте увеличить размер точки 'glPointSize (2.0)'. –
@ н.м. Я использовал glEnable (GL_BLEND); glEnable (GL_POINT_SMOOTH); glHint (GL_POINT_SMOOTH_HINT, GL_NICEST); и это сработало! Спасибо! – WillieWonka
Предполагая, что и ваше окно, и ваше изображение имеют ровно 1024x500 пикселей (и матрица вида модели оставлена при идентификации), ваш код должен работать, если '_p [0]' и '_p [1]' установлены равными 0,5, без необходимости использовать ' GL_POINT_SMOOTH'. – derhass