Как включить АА (антиалиазинг) ??
Рисую квадами, так как нужно задавать толщину линии, а glLineWidth не работает.
glEnable(GL_POLYGON_SMOOTH);
glEnable(GL_LINE_SMOOTH);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glLineWidth(0.5f);
это вообще никак не помогает.
Рисую без шейдеров, так как они для задачи нафиг не нужны, но отрисовать на OpenGL нужно.
И пинайте меня, но я рисую без VBO, так как не хотел запариваться . Само рисование:
void GLRender() {
if (_hDC) {
glClearColor(bgColor[0] / 256.0f, bgColor[1] / 256.0f, bgColor[2] / 256.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
glOrtho(0, _w, 0, _h, -1, 1);
glPushMatrix();
DrawLines();
glPopMatrix();
SwapBuffers(_hDC);
}
}
void DrawCustomLine(GLLine line) {
glColor3ub(line.color[0], line.color[1], line.color[2]);
float nx = line.x2 - line.x1;
float ny = line.y2 - line.y1;
float len = sqrtf(nx*nx + ny*ny);
nx /= len *2;
ny /= len *2;
//0__1
//I I
//3__2
glVertex2f(line.x1 - floor(line.thinkness * ny), line.y1 + ceil(line.thinkness * nx));
glVertex2f(line.x1 + ceil(line.thinkness * ny), line.y1 - floor(line.thinkness * nx));
glVertex2f(line.x2 + ceil(line.thinkness * ny), line.y2 - floor(line.thinkness * nx));
glVertex2f(line.x2 - floor(line.thinkness * ny), line.y2 + ceil(line.thinkness * nx));
}
void DrawLines() {
glBegin(GL_QUADS);
for (size_t i = 0; i < lineBuffer.size(); i++) {
DrawCustomLine(lineBuffer[i]);
}
glEnd();
}
А если через VBO, то подскажите как отрисовать кучу Квадов разного цвета передав один массив.