2010-03-29 13 views
5

Sto cercando di utilizzare un geometry shader banale, ma se eseguito in Shader Builder su un computer portatile con una GMA X3100 cade indietro e utilizza il software di rendering. Secondo this document il GMA X3100 supporta EXT_geometry_shader4.Do GLSL geometry shader lavorano sulla GMA X3100 sotto OSX

L'ingresso è POINTS e l'uscita è LINE_STRIP.

Cosa sarebbe necessario per farlo funzionare sulla GPU (se possibile )

uniform vec2 offset; 

void main() 
{ 
    gl_Position = gl_PositionIn[0]; 
    EmitVertex(); 
    gl_Position = gl_PositionIn[0] + vec4(offset.x,offset.y,0,0); 
    EmitVertex(); 
    EndPrimitive(); 
} 
+0

Sei sicuro di stare su OSX> = 10.5? Sembra che EXT_geometry_shader4 non sia supportato in 1.4 e sotto. – genpfault

+0

Sì, sono in 10.6.2. – GameFreak

risposta

1

ho trovato questo strumento OpenGL Extensions Viewerdavvero utile per rintracciare questo tipo di problemi. Ti permetterà certamente di confermare le affermazioni di Apple. Detto questo, wikipedia states il supporto GLSL ufficiale per gli shader geometrici è tecnicamente una funzionalità di OpenGL 3.2.

Qualcuno sa se l'implementazione EXT_geometry_shader4 supporta la sintassi GLSL o richiede un determinato formato hardware o driver?

0

Abbastanza interessante, ho sentito che le affermazioni di compatibilità di Intel per quanto riguarda queste GPU integrate sono a volte esagerate o semplicemente falsa. Apparentemente l'X3100 supporta solo OpenGL 1.4 e seguenti (o così ho sentito, prendi questo con un pizzico di sale, dato che non posso confermarlo).

2

Dalla documentazione si collega ad essa appare certamente dovrebbe essere sostenuto.

Si potrebbe provare

int hasGEOM = isExtensionSupported("EXT_geometry_shader4");

Se ritorna in senso affermativo si può avere un altro problema impedendogli di lavorare.

Sempre secondo il GLSL Spec (1.20.8) "Qualsiasi comportamento esteso deve prima essere abilitato. direttive per controllare il comportamento del compilatore rispetto alle estensioni sono dichiarate con la direttiva #extension"

I non vedere si utilizza questa direttiva nel codice in modo che possa suggerire

#extension GL_EXT_geometry_shader4 : enable

nella parte superiore del vostro blocco di codice shader.

-2

Sul mio computer portatile HP, con una X3100 di Intel che utilizzano Windows 7 driver x64 (v8.15.10.1930 (2009/09/23)) direttamente dal sito web di Intel, l'estensione "EXT_geometry_shader4" (o qualsiasi variazione di esso) è Non supportato. L'ho confermato a livello di programmazione e utilizzando lo strumento "GPU Caps Viewer" (che elenca le estensioni supportate rilevate, tra le altre cose utili). Poiché Windows tende a essere il soggetto principale dello sviluppo dei driver da qualsiasi fornitore, è improbabile che il driver OSX sia migliore e potrebbe infatti avere anche estensioni meno supportate.