PDA

View Full Version : [GLSL, NVIDIA] #version


fero86
07-09-2009, 20:36
sto provando a scrivere degli shaders per OpenGL ma non riesco a mettere la direttiva #version. ho una scheda grafica NVIDIA GeForce 6600 (scusate se non é il massimo :p) e i drivers aggiornati l'altro ieri, non da Windows Update visto che non ce li hanno messi, ma proprio dal sito NVIDIA; ebbene se provo a scrivere questo semplicissimo fragment shader:

#version 150

void main()
{
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}


ottengo i seguenti errori di compilazione:

0(1) : error C0129: invalid char 'v' in integer constant suffix
0(1) : error C0129: invalid char 'o' in integer constant suffix
0(1) : error C0129: invalid char 'i' in integer constant suffix
0(1) : error C0129: invalid char 'd' in integer constant suffix
0(1) : error C0205: invalid profile "main"
0(1) : error C0206: invalid token "<invalid atom 127890368>" in version line
(0) : error C0000: syntax error, unexpected $end at token "<EOF>"
(0) : error C0501: type name expected at token "<invalid atom -1>"


sono sicuro che il testo del codice sorgente venga passato correttamente alla glShaderSource (verificato col debugger).

la sintassi per scrivere il numero di versione é giusta? perché mi sembra di capire che dopo il numero 150 lui si aspetti un "integer constant suffix".

grazie ^^

fero86
07-09-2009, 21:21
tutto a posto, era un errore mio: gli passavo correttamente l'array delle linee di codice ma le linee non erano terminate ne' col line feed ne' con CRLF :)

di conseguenza lui credeva che tutto il codice stesse sulla linea del #version; questo spiega anche come mai nel log di compilazione gli errori stiano tutti alla riga 1 (non l'avevo mai capito :D).