2015-11-19 3 views
-1

J'essaie d'envoyer une variable de mon vertex shader à mon fragment shader, mais lorsque j'inclue une variable in spécifique dans une instruction if, rien ne s'affiche. En supprimant l'instruction if, tout apparaît et fonctionne normalement. Ce qui est bizarre, c'est que si l'instruction ne fait rien et qu'aucune erreur n'est générée par le fragment shader.La variable Fragment Shader IN n'affiche rien

J'ai plusieurs autres variables que j'envoie de mon vertex shader à mon fragment shader mais celle-ci est spécifiquement la seule à causer des problèmes. Je sais que type est réglé correctement parce que je l'utilise pour autre chose qui fonctionne correctement.

vertex shader

#version 150 

in float type; 
out int roofBool; 

void main(void) 
{ 
    textureXY = texcoords; 
    roofBool = 0; 
    if(type == 2){ 
    roofBool = 1; 
    } 
} 

fragment shader

#version 150 

in int roofBool; 

// The output. Always a color 
out vec4 fragColor; 

void main() 
{ 
    int a = 0; 
    if(roofBool == 1){ //removing this causes everything to work 
    a = 2; 
    } 
} 

Répondre

2

variables int ne peuvent être interpolées par le GL. Vous devez déclarer à la fois la sortie et l'entrée correspondante avec le qualificateur flat`. À partir du comportement que vous avez décrit, il semble que vous ne vérifiiez pas correctement l'état de compilation et de liaison de vos shaders/programmes, et ne semblez pas récupérer le journal d'informations du compilateur/éditeur de liens. Vous auriez probablement reçu un message d'erreur utile si vous l'avez fait.