Тема: OpenGL
Показать сообщение отдельно
Старый 03.10.2016, 18:18   #130
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: OpenGL


Как включить АА (антиалиазинг) ??
Рисую квадами, так как нужно задавать толщину линии, а 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, то подскажите как отрисовать кучу Квадов разного цвета передав один массив.
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием