Foi útil?

Solução

Desculpe, mas você não pode acessar esse tipo de estado de GLSL, período.

Na verdade, no futuro GLSL você tem que enviar todos os unforms / atributos a si mesmo, ou seja, não automagic gl_ModelViewMatrix, gl_LightPosition, gl_Normal ou similar. Apenas coisas básicas como gl_Position e gl_FragColor estarão disponíveis.

Esse tipo de vazios sua segunda pergunta, mas você pode sempre usar # ifdef de ativar / desativar partes na sua shader se você achar que mais conveniente do que escrever shaders separadas para diferentes modos de textura.

Relacionada, observe que ramificação é geralmente bastante lento por isso, se você tem a necessidade de velocidade não evitá-lo tanto quanto possível. (Este assuntos dinâmica especialmente irregular ramificação, como fragmentos são processados ??em blocos de SIMD e todos os fragmentos em um bloco devem calcular as mesmas instruções, mesmo que só se aplicam para um ou alguns fragmentos.)

Outras dicas

Um método que eu vi é para ligar uma textura 1x1 com um único texel de (1.0, 1.0, 1.0, 1.0) ao renderizar polígonos que não são texturizados. Um interruptor de textura deve ser menos caro do que um interruptor de shader e uma textura 1x1 vai caber inteiramente dentro do cache de textura.

scroll top