2010-01-23 8 views
6

Prima di tutto, qual è lo scopo di questo codice?OpenGL: GL_LINE_SMOOTH non supportato su tutte le schede; nemmeno disegnare le linee, a meno che

glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); 

ho potuto mettere lì GL_DONT_CARE ma non rende le mie linee disegnate, a meno io uso glDisable(GL_LINE_SMOOTH)

Così im chiedendo se ci sono alcune costruite nel meccanismo per renderlo disegnare le linee, anche se le linee morbide non supportato (quindi li disegnerebbe senza antialising ...)

Oppure devo fare proprie funzioni per esso e controllare se le linee morbide sono supportate ecc ... e ogni volta che voglio disegnare linee morbide, io bisogno di chiamare questa funzione che controlla se la sua s upported? Argh.

Modifica: Le linee sono lisce sulla mia altra carta, sulla mia altra carta non si mostrano nemmeno, a meno che non disabiliti le linee morbide. Quindi questo è il problema, non glEnable (GL_BLEND)

+0

suona come un bug nel driver a me. – ypnos

+0

@ypnos: se non ha abilitato la fusione, non è –

+0

l'unione è abilitata, guarda ora le mie modifiche –

risposta

5

glHint come suggerisce il nome è un suggerimento per il driver. Non è necessario ottenere nulla. Il funzionamento effettivo di glHint dipende dal driver grafico.

Inoltre, per abilitare LINE_SMOOTH, è necessario aver attivato il blending. Hai abilitato GL_BLEND? E mentre ci sei, scegli anche la tua funzione glBlend!

Esempio:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
glEnable(GL_BLEND); 
+0

ho modificato il mio primo post ora, le linee sono rese bene su altre carte, ma con la carta che non supporta le linee morbide, non le renderà affatto, a meno che non disabiliti gl_line_smooth –

+0

@Newbie: qual è l'altra carta? –

Problemi correlati