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


Как включить АА (антиалиазинг) ??
Рисую квадами, так как нужно задавать толщину линии, а glLineWidth не работает.

glEnable(GL_POLYGON_SMOOTH);
    
glEnable(GL_LINE_SMOOTH);
    
glEnable(GL_BLEND);
    
glBlendFunc(GL_SRC_ALPHAGL_ONE_MINUS_SRC_ALPHA);
    
glLineWidth(0.5f); 
это вообще никак не помогает.
Рисую без шейдеров, так как они для задачи нафиг не нужны, но отрисовать на OpenGL нужно.

И пинайте меня, но я рисую без VBO, так как не хотел запариваться . Само рисование:
void GLRender() {
    if (
_hDC) {

        
glClearColor(bgColor[0] / 256.0fbgColor[1] / 256.0fbgColor[2] / 256.0f0.0f);
        
glClear(GL_COLOR_BUFFER_BIT);
    
        
glLoadIdentity();
        
glOrtho(0_w0_h, -11);
        
        
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 0lineBuffer.size(); i++) {

        
DrawCustomLine(lineBuffer[i]); 
    }

    
glEnd();

А если через VBO, то подскажите как отрисовать кучу Квадов разного цвета передав один массив.
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием