Non riesco a trovare una risposta chiara su questo, nonostante le ore di googlare. Qualcuno può dirmi cosa sta succedendo? Ottengo errori dicendo cose come "la versione 140 non è supportata". È questo il mio dispositivo (Kindle Fire) o GL ES 2.0? Devo aggiungere librerie o altro?Quali versioni di GLSL posso utilizzare in OpenGL ES 2.0?
risposta
in realtà non è necessario aggiungere alcuna libreria, 140 è troppo nuovo per Kindle Fire. Rimuovere la specifica della versione o decrementarla fino alla compilazione dello shader. Potrebbe essere necessario correggere alcuni altri errori nello shader poiché le singole versioni del linguaggio presentano alcune differenze.
È inoltre possibile interrogare GL_SHADING_LANGUAGE_VERSION
utilizzando glGetString()
per ottenere la versione di GLSL supportata sul dispositivo (almeno 100 garantiti - ES 2.0 è il primo con un linguaggio di ombreggiatura).
Inoltre, come accennato dagli altri, OpenGL ES GLSL non è la stessa lingua di OpenGL ES (ho pensato che fosse piuttosto ovvio, OpenGL ES non è OpenGL) quindi i numeri di versione non corrisponderanno. C'è tuttavia GL_ARB_ES2_compatibility e le sue estensioni a ES3, ES3.1 e ES3.2, dove viene descritta la mappatura dei linguaggi GLSL ES/non ES, e usando quelli è possibile ottenere funzionalità simili a ES su un non ES contesto.
Il OpenGL ES 2.0 spec si riferisce a GLSL ES, che non è lo stesso di GLSL.
Le specifiche GLSL ES specifiche dice:
Questa versione del linguaggio si basa sulla versione 1.10 del GLSL desktop. Tuttavia include un numero di funzionalità disponibili nella versione 1.20 ma non nella versione 1.10.
Controllare le specifiche per vedere cosa è supportato.
A quanto pare sono orribile a cercare su google. Va bene. –
(mi dispiace, non posso fare a meno di ridere del tuo commento) –
Vale la pena aggiungere che la specifica OpenGL ES 2.0 afferma che supporta GLSL ES 1.0 come minimo. –
OpenGL ES non è OpenGL, quindi il linguaggio shader di OpenGL ES non è il linguaggio shader di OpenGL. Sono simili, ma non sono uguali. Quindi non esiste una versione GLSL desktop che corrisponda alla versione di GLSL ES.
E pensavo che 140 fosse piuttosto vecchio. :( –
In realtà non risponde alla domanda.Se qualcosa supporta OpenGL ES 2.0 - Quale versione di GLSL supporta? (Almeno, almeno, intendo) – BrainSlugs83
@ BrainSlugs83: Se qualcosa supporta OpenGL ES 2.0 esso è garantito il supporto per GLSL ES 100. C'è molta confusione quando si confrontano tristemente questi numeri, poiché le persone vedono la direttiva '#version ...' e pensano immediatamente che le mele (GLSL desktop) siano in qualche modo paragonabili alle arance (GLSL incorporato) Sono simili sotto molti aspetti, ma divergenti in molti altri (e la numerazione delle versioni è un'area in cui divergono drasticamente). Date un'occhiata a: http://www.opengl.org/registry/gles/ - se guardate sotto il titolo "OpenGL ES 2.0 Specific", che indica la versione GLSL ES ad esso associata –