estado-local

Description

As funções de estado local controlam a renderização ou do estado corrente - ou do estado da primitiva correntemente pega(grabbed). Em Fluxus estado significa significa a forma que as coisas são mostradas, tanto ligando/desligando opções de render, mudando o estilo de diferentes opções, ou alterando a transformação corrente.

(push)

Returns void

Empurra uma cópia do estado corrente de desenho para o topo da pilha. O estado de desenho contém informação sobre coisas como cor corrente, transformação e dicas(hints).

Example

 (colour (vector 1 0 0)) ; aplica cor corrente pra vermelho
 (push)                  ; copia e empurra estado de desenho
 (colour (vector 0 1 0)) ; aplica cor corrente pra verde
 (draw-cube)         ; desenha um cubo verde
 (pop)           ; esquece estado de desenho antigo
 ; cor corrente é vermelha de novo.

(pop)

Returns void

Destrói o estado de desenho corrente, e aplica para o estado corrente o antigo anteriormente empurrado na pilha. O estado de desenho contém informação sobre coisas como cor corrente, transformação e dicas(hints).

Example

 (colour (vector 1 0 0)) ; aplica cor corrente pra vermelho
 (push)                  ; copia e empurra estado de desenho
 (colour (vector 0 1 0)) ; aplica cor corrente pra verde
 (draw-cube)             ; desenha um cubo verde
 (pop)                   ; esquece estado de desenho antigo
 ; cor corrente é vermelha de novo.

(grab id-do-objeto)

Returns void

Pega o objeto especificado. Uma vez que o objeto foi pego seu estado pode ser modificado usando os mesmos comandos usados pra ajustar o estado de desenho atual. (ungrab) precisa ser usado para retornar ao estado de desenho normal. "grabbing" também pode ser "pilhado", neste caso (ungrab) pula para a próxima primitiva pega.

Example

 (colour (vector 1 0 0))      ; aplica a cor atual para vermelho
 (define mycube (build-cube)) ; faz um cubo vermelho
 (grab mycube)
 (colour (vector 0 1 0)) ; aplica a cor do cubo como verde
 (ungrab)          ; retorna ao estado normal

(ungrab)

Returns void

Solta o objeto pego atualmente, e ou retorna ao estado de desenho normal, ou tira a ultima primitiva pega do topo da pilha.

Example

 (colour (vector 1 0 0))      ; aplica a cor atual para vermelho
 (define mycube (build-cube)) ; faz um cubo vermelho
 (grab mycube)
 (colour (vector 0 1 0)) ; aplica a cor verde ao cubo
 (ungrab)          ; retorna ao estado normal

(apply-transform id-do-objeto)

Returns void

Aplica a transformação corrente às posições dos vértices do objeto dado e ajusta sua tranformação para identidade.

Example

 (rotate (vector 45 0 0))
 (define mycube (build-cube)) ; faz um cubo com uma rotação
 (with-primitive mycube (apply-transform)) ; aplica a rotação aos pontos do cubo

(opacity valor)

Returns void

Ajusta a opacidade do estado de desenho atual, ou da primitiva pega atualmente.

Example

 (opacity 0.5)
 (define mycube (build-cube)) ; faz um cubo semi-transparente.

(wire-opacity valor)

Returns void

Ajusta a opacidade das beiradas da malha no estado ou da primitiva atual.

Example

 (hint-none)
 (hint-wire)
 (backfacecull 0)
 (line-width 5)
 (wire-colour (vector 1 1 1))
 (wire-opacity 0.5)
 (build-cube) ; makes a half transparent wireframe cube

(shinyness valor)

Returns void

Ajusta o brilho do estado atual de desenho, ou da primitiva atualmente pega. Esse valor ajusta a densidade do brilho especular.

Example

 (shinyness 100)
 (specular (vector 1 1 1)) ; ajusta a cor especular
 (define mysphere (build-sphere 10 10)) ; makes a shiny cube

(colour vetor-cor)

Returns void

Ajusta a cor do estado de desenho atual, ou a primitiva atualmente pega.

Example

 (colour (vector 1 0.5 0.1)) ; mmm laranja...
 (define mycube (build-cube)) ; faz um cubo laranja

(colour-mode modo Returns: void Description: Muda a forma como Fluxus interpreta dados de cor para o estado de desenho ou da primitiva atual. Os simbolos dos modos de cor são: rgb hsv Exemplo: (clear) (colour-mode 'hsv) (for ((x (in-range 0 10))) (translate (vector 1 0 0)) (colour (vector (/ x 10) 1 1)) (build-cube)) EndFunctionDoc Scheme_Object *colour_mode(int argc, Scheme_Object **argv) { DECL_ARGV(); ArgCheck("colour-mode", "S", argc, argv); string mode=SymbolName(argv[0]); if (mode=="rgb") Engine::Get()->State()->ColourMode=MODE_RGB; else if (mode=="hsv") Engine::Get()->State()->ColourMode=MODE_HSV; else Trace::Stream<<"colour mode not recognised: "<hsv colour-vector Returns: vector Description: Converts the RGB colour to HSV. Example: (rgb->hsv (vector 1 0.5 0.1)) EndFunctionDoc StartFunctionDoc-pt rgb->hsv vetor-cor)

Returns vetor

Converte a cor RGB para HSV.

Example

 (rgb->hsv (vector 1 0.5 0.1))

(hsv->rgb vetor-cor)

Returns vetor

Converte a cor HSV para RGB

Example

 (clear)
 (for* ((x (in-range 0 10))  ; builds a 10x10 HSV colour pattern
        (y (in-range 0 10)))
     (identity)
     (translate (vector x y 0))
     (colour (hsv->rgb (vector (/ x 10) (/ y 10) 1)))
     (build-cube))

(wire-colour vetor-cor)

Returns void

Ajusta a cor do "wire frame" do estado de desenho atual, ou a primitiva atualmente pega. Visível com (hint-wire) na maioria das primitivas.

Example

 (wire-colour (vector 1 1 0)) ; ajusta a cor do fio como amarelo
 (hint-wire)
 (define mycube (build-cube)) ; faz um cubo com wireframe amarelo

(specular vetor-cor)

Returns void

Ajusta a cor especular do estado de desenho corrente, ou o objeto atualmente pego.

Example

 (specular (vector 0 0 1)) ; ajusta azul como a cor especular
 (define mysphere (build-sphere 10 10)) ; faz uma esfera azul brilhante.

(ambient vetor-cor)

Returns void

Ajusta a cor ambiente do estado de desenho corrente, ou a primitiva atualmente pega.

Example

 (ambient (vector 0 0 1)) ; ajusta a cor ambiente como azul
 (define mysphere (build-sphere 10 10)) ; faz uma chata esfera azul

(emissive valor)

Returns void

Ajusta a cor emissiva do estado de desenho atual, ou da primitiva atualmente pega.

Example

 (emissive (vector 0 0 1)) ; ajusta a cor emissiva para azul
 (define mysphere (build-sphere 10 10)) ; faz uma esfera azul brilhante

(identity)

Returns void

Ajusta a transformação do estado de desenho para identidade, no estado da pilha, ou a primitiva atualmente pega.

Example

 (define mycube (with-state
     (scale (vector 2 2 2)) ; ajusta o tamanho atual pro dobro em cada dimensão
     (build-cube))) ; faz um cubo aumentado

 (with-primitive mycube
     (identity)) ; apaga a transformação e coloca o cubo de volta ao seu
                 ; estado original

(concat matrix)

Returns void

Concatena (multiplica) uma matriz para o estado de desenho atual ou primitiva pega.

Example

 (define mymatrix (mrotate (vector 0 45 0))) ; faz uma matriz
 (concat mymatrix) ; concat ela no estado atual
 (build-cube) ; faz um cubo com esta rotação

(translate vetor)

Returns void

Aplica uma translação ao estado de desenho atual ou primitiva pega

Example

 (translate (vector 0 1.4 0)) ; translada a transformação atual pra
                              ; cima um pouco
 (build-cube) ; constrói um cubo com esta transformação

(rotate vetor-ou-quaternion)

Returns void

Aplica uma rotação ao estado de desenho atual ou primitiva pega.

Example

 (rotate (vector 0 45 0)) ; vira 45 graus no eixo Y
 (build-cube) ; constrói um cubo com esta transformação

(scale vetor)

Returns void

Aplica uma escalagem ao estado de desenho atual ou primitiva pega.

Example

 (scale (vector 0.5 0.5 0.5)) ; escala a tranformação atual para
                              ; metade do tamanho
 (build-cube) ; constrói um cubo com esta transformação

(get-transform)

Returns vetor-matriz

Retorna uma matriz representando o estado de tranformação corrente ou para a primitiva pega.

Example

 (clear)
 ; build a hierarchy
 (define a
     (with-state
         (colour (vector 1 0.5 0.5))
         (build-cube)))
 (define b (with-state
         (colour (vector 0.5 1 0.5))
         (parent a)
         (translate (vector 2 0 0))
         (build-cube)))
 (define c (with-state
         (colour (vector 0.5 0.5 1))
         (parent b)
         (translate (vector 2 0 0))
         (build-cube)))

 (define (animate)
     ; animate the heirarchy
     (with-primitive a (rotate (vector 0 0 (sin (time)))))
     (with-primitive b (rotate (vector 0 0 (sin (time)))))
     (with-primitive c (rotate (vector 0 0 (sin (time)))))

     ; position a yellow sphere with c's local transform
     (with-state
         (concat (with-primitive c (get-transform)))
         (opacity 0.5)
         (colour (vector 1 1 0))
         (draw-sphere))

     ; position a purple sphere with c's global transform
     (with-state
         (concat (with-primitive c (get-global-transform)))
         (opacity 0.5)
         (colour (vector 1 0 1))
         (draw-sphere)))

 (every-frame (animate))

(get-global-transform)

Returns matriz-vetor

Retorna uma matriz representando a transformação global atual para a primitiva atual

Example

 (clear)
 ; build a hierarchy
 (define a
     (with-state
         (colour (vector 1 0.5 0.5))
         (build-cube)))
 (define b (with-state
         (colour (vector 0.5 1 0.5))
         (parent a)
         (translate (vector 2 0 0))
         (build-cube)))
 (define c (with-state
         (colour (vector 0.5 0.5 1))
         (parent b)
         (translate (vector 2 0 0))
         (build-cube)))

 (define (animate)
     ; animate the heirarchy
     (with-primitive a (rotate (vector 0 0 (sin (time)))))
     (with-primitive b (rotate (vector 0 0 (sin (time)))))
     (with-primitive c (rotate (vector 0 0 (sin (time)))))

     ; position a yellow sphere with c's local transform
     (with-state
         (concat (with-primitive c (get-transform)))
         (opacity 0.5)
         (colour (vector 1 1 0))
         (draw-sphere))

     ; position a purple sphere with c's global transform
     (with-state
         (concat (with-primitive c (get-global-transform)))
         (opacity 0.5)
         (colour (vector 1 0 1))
         (draw-sphere)))

 (every-frame (animate))

(parent id-primitiva)

Returns void

Parenteia a primitiva correntemente pega à primitiva pai dada. A primitiva corrente vai ser agora movida junto com o pai por adquirir todas as suas transformações.

Example

 (define parent-prim (build-cube)) ; make a parent cube
 (translate (vector 2 0 0)) ; move a bit in x
 (parent parent-prim) ; set parent-prim as the current parent
 (define child-prim (build-cube)) ; make a child cube
 (grab parent-prim)
 (rotate (vector 0 45 0)) ; the child will now be moved by this transform in addition to its own
 (ungrab)

(line-width valor)

Returns void

Ajusta a largura da linha (em espaço de tela) do estado de desenho corrente, ou da primitiva correntemente pega, Afeta wireframe e afins.

Example

 (line-width 5)
 (hint-wire)
 (build-sphere 10 10) ; faz uma esfera com um denso wireframe

(point-width value)

Returns void

Ajusta o tamanho do ponto (em espaço na tela) do estado de desenho corrente, ou da primitiva pega. Afeta a renderização de pontos e particulas no hardware.

Example

 (point-width 5)
 (hint-points)
 (build-sphere 10 10) ; faz uma esfera com pontos grossos

(blend-mode src dst)

Returns void

Ajusta o modo de mistura do estado de desenho corrente, ou da primitiva pega. Esse é o modo que o alpha é composto no superficie renderizada.

Example

 ; list out all the possible blendmodes

 (define src-blend (vector 'zero 'one 'dst-color 'one-minus-dst-color 'src-alpha
                     'one-minus-src-alpha 'dst-alpha 'one-minus-dst-alpha
                     'src-alpha-saturate))

 (define dst-blend (vector 'zero 'one 'src-color 'one-minus-src-color 'src-alpha
                     'one-minus-src-alpha 'dst-alpha 'one-minus-dst-alpha))

 ; picks a random element
 (define (pick-rnd-item l)
     (vector-ref l (random (vector-length l))))

 ; make lots of random spheres
 (define (rnd-sphere n)
     (push)
     (hint-depth-sort)
     (opacity 0.5)
     (colour (vector (flxrnd) (flxrnd) (flxrnd)))

     ; set a random blendmode
     (blend-mode (pick-rnd-item src-blend) (pick-rnd-item dst-blend))

     (translate (vector (flxrnd) (flxrnd) (flxrnd)))
     (scale (vector 0.1 0.1 0.1))
     (build-sphere 10 10)
     (pop)
     (if (zero? n)
         0
         (rnd-sphere (- n 1))))

 (clear)
 (clear-colour (vector 0.5 0.5 0.5))
 (rnd-sphere 100)

(hint-solid)

Returns void

Ajusta as dicas pra renderizar como solid no estado de desenho corrente, ou a primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.

Example

 (hint-solid) ; esse é o estilo de render original então não deve
              ; muito estimulante
 (build-cube) ; faz um cubo renderizado sólido

(hint-wire)

Returns void

Ajusta o render para wireframe no modo de estado corrente, ou da primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.

Example

 (hint-wire)
 (build-cube) ; faz um cubo em wireframe

(hint-wire-stippled)

Returns void

Ajusta as dicas de render para fios pontilhados no estado de desenho ou primitiva atual.

Example

 (hint-none)
 (hint-wire-stippled)
 (build-cube) ; make a stippled wirefame cube

(hint-frustum-cull)

Returns void

Ajusta as dicas de render para ativar frustum culling no estado de desenho, ou primitiva atual. Dicas de render muda a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou não ter efeito em certos tipos de primitivas, por isso o nome dica. Quando usar frustum culling, certifique-se de chamar (recalc-bb) na primitiva também.

Example

 (hint-frustum-cull)

(hint-normalise)

Returns void

Se o estado de transformação atual contém uma escalagem, as normais transformadas podem não ser unitárias em tamanho, resultando em problemas indesejáveis em relação à iluminação. (hint-normalise) faz todas as normais serem de tamanho unitário depois de terem sido transformadas. Isto é requerido se o estado de desenho atual contém escalagem não uniforme.

Example

 (clear)
 (hint-normalise)
 (build-cube)
 ; non uniform scaling
 (with-primitive (build-cube)
    (translate #(.5 0 0))
    (scale #(3 1 1))
    (translate #(.5 0 0)))
 ; uniform scaling
 (with-primitive (build-cube)
    (translate #(0 0 2))
    (scale 2))

(hint-noblend)

Returns void

Desativa blending. Útil se objetos com blending render estão num pixelprimitive.

Example

 (clear)
 (hint-wire)
 (scale #(9.8 8 1))
 (translate #(-1 -.5 0))
 (define p0 (build-pixels 512 512 #t))
 (with-pixels-renderer p0
    (hint-ignore-depth)
    (with-primitive (build-particles 2048)
        (pdata-map! (lambda (p) (vmul (crndvec) 2)) "p")
        (pdata-map! (lambda (c) #(1 .5)) "c")))

 (hint-noblend)
 (translate #(1 0 0))
 (define p1 (build-pixels 512 512 #t))
 (with-pixels-renderer p1
    (hint-ignore-depth)
    (with-primitive (build-particles 2048)
        (pdata-map! (lambda (p) (vmul (crndvec) 2)) "p")
        (pdata-map! (lambda (c) #(1 .5)) "c")))

(hint-noswrite)

Returns void

Desativa escrita em z. Útil para algumas transparencias hackeadas.

Example

 (clear)
 (hint-noblend)

(line-pattern fator padrão)

Returns void

Fator especifica um multiplicador para cada bit no padrão da linha pontilhada. Padrão especifica um inteiro de 16 bits em que o padrão do bit determina qual fragmento da linha vai ser desenhado quando a linha é rasterizada.

Example

 (hint-none)
 (hint-wire-stippled)
 (line-pattern 4 #x0aaaa)
 (build-cube) ; make a stippled wirefame cube

(hint-normal)

Returns void

Ajusta as dicas de render para fazer aparecer normais no estado de desenho corrente, ou da primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.

Example

 (hint-normal)
 (build-cube) ; mostra as normais do cubo

(hint-points)

Returns void

Ajusta as dicas para aparecer pontos no estado de desenho corrente, ou da primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.

Example

 (hint-points)
 (build-cube) ; mostra os pontos dos vertices deste cubo

(hint-anti-alias)

Returns void

Ajusta as dicas de render para anti-alias no estado de desenho atual, ou da primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.

Example

 (hint-anti-alias)
 (build-cube) ; mostra um cubo macio

(hint-unlit)

Returns void

Ajusta as dicas de render para luzes desligadas no estado de desenho corrente, ou da primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.

Example

 (hint-unlit)
 (build-cube) ; mostra um cubo sem iluminação

(hint-vertcols)

Returns void

Ajusta as dicas de render pra usar cores de vértices no estado de desenho corrente, ou da primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas. Cores de vértices modificam o estado atual de (colour).

Example

 (clear)
 (hint-vertcols)
 (define mycube (build-cube)) ; make a cube with vertcols enabled

 (with-primitive mycube
     (pdata-map!
         (lambda (c)
             (rndvec)) ; randomise the vertcols
         "c"))

(hint-box)

Returns void

Ajusta as dicas de render para mostrar a caixa envolvente no estado de desenho corrente, ou a primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.

Example

 (hint-box)
 (build-sphere 10 10) ; faz uma esfera com a bounding box

(hint-none)

Returns void

Limpa as dicas de render no estado de desenho corrente, ou da primitiva pega. Isso permite que você se livre do estilo sólido default, mas também significa que voce pode ligar e desligar dicas sem usar push ou pop

Example

 (hint-none)
 (hint-wire)
 (build-cube) ; faz um cubo vísivel apenas em wireframe

(hint-origin)

Returns void

Ajusta as dicas de render para mostrar a origem espacial do objeto no estado de desenho corrente, ou da primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.

Example

 (hint-origin)
 (build-sphere 10 10) ; make a sphere with the origin displayed

(hint-cast-shadow)

Returns void

(nota: não implementado ainda) Ajusta as dicas de render para fazer sombra para o estado de desenho atual, ou a primitiva pega. Dicas de render podem mudar a forma que as primitivas são renderizadas, mas pode ter efeitos diferentes- ou nenhum efeito em certas primitivas, portanto o nome dica.

Example

 (hint-origin)
 (build-sphere 10 10) ; make a sphere with the origin displayed

(hint-depth-sort)

Returns void

Ajusta as dicas de render para separar em profundidade o estado corrente, ou a primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.

Example

 (hint-depth-sort)
 (build-sphere 10 10)

(hint-ignore-depth)

Returns void

Ajusta as dicas de render para ignorar tested de profundidade no estado corrente de desenho, ou da primitiva pega. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas. Essa capacidade é util para renderizar objetos transparentes, já que ela significa que objetos vão aparecer atrás de outros já renderizados.

Example

 (clear)
 (with-state
     (hint-ignore-depth)
     (opacity 0.6)
     (with-state
         (colour (vector 1 0 0))
         (build-cube))
     (with-state
         (colour (vector 0 1 0))
         (translate (vector 1 0 0))
         (build-cube)))

(hint-lazy-parent)

Returns void

Ajusta as dicas de render para prevenir esta primitiva de passar suas transformações a um filho. Dicas de render mudam a forma como as primitivas são renderizadas, mas podem ter efeitos diferentes - ou nenhum efeito em certas primitivas portanto o nome dicas.

Example

 (hint-lazy-parent)
 (build-sphere 10 10) ; make a sphere with the origin displayed

(hint-cull-ccw)

Returns void

Vira as faces das quais a face anterior é excluida(culled).

Example

 (hint-cull-ccw)
 (build-sphere 10 10) ; make an inside out

(hint-sphere-map)

Returns void

Ajusta as dicas para renderizar objetos como se eles fossem perfeitamente refletivos para o estado ou primitiva atual.

Example

 (clear)
 (hint-sphere-map)
 (texture (load-texture "test.png"))
 (define p (build-torus 1 2 20 20))
 (every-frame (with-primitive p
                 (rotate #(.543 .59 .87))))

(texture número-id-textura)

Returns void

Ajusta a textura do estado corrente, ou da primitiva pega. Ids de textura podem ser geradas pela função load-texture.

Example

 (texture (load-texture "mytexture.png"))
 (build-sphere 10 10) ; faz uma textura com mytexture.png

(multitexture número-textureunit número-id-primitiva)

Returns void

Ajusta a textura do estado corrente de desenho, ou da primitiva pega da mesma forma que a função textura, mas permite que você especifique a unidade de textura (0-7) para aplicar-lá.Multitextura permite você aplicar diferentes texturas e coordenadas ao mesmo objeto de uma vez. Unidade de textura 0 é o padrão (que usa a pdata "t" para suas coordenadas) unidade de textura n olha pela pdata "tn" - ie multitexture 1 olha por "t1". Você precisa adicionar estas você mesmo usando (pdata-add) ou (pdata-copy). Multitexturas é útil quando a textura contém alpha, já que elas podem ser sobrepostas, por exemplo adesivos colocados em texturas de fundo.

Example

 (define obj (build-sphere 10 10)) ; make a sphere
 (grab obj)
 (multitexture 0 (load-texture "mytextureA.png"))
 (multitexture 1 (load-texture "mytextureB.png"))
 (pdata-add "t1" "v")   ; make some texture coords for texture B
 (pdata-copy "t" "t1")  ; copy them from the default texture coords
 (ungrab)

(print-scene-graph)

Returns void

Mostra o scene graph corrente, útil para debug.

Example

 (print-scene-graph) ; exciting...

(hide número-escondido)

Returns void

Ajusta o estado escondido para a primitiva pega (tbm afeta todas as primitivas filhas). Primitivas escondidas podem ser tratadas normalmente em todas as formas - elas apenas não serão renderizadas.

Example

 (define obj (build-cube))
 (grab obj)
 (hide 1) ; hide this cube
 (ungrab)

(camera-hide número-escondido)

Returns void

Ajusta os estado escondido para a primitiva atual, com a camêra atual (também afeta todas as primitivas descendentes). Permite que você desligue a renderização para as primitivas em camêras diferentes.

Example

 (define obj (build-cube))
 (with-primitive obj
     (camera-hide 1)) ; hide this cube

(selectable número-selecionável)

Returns void

Ajusta se a primitiva pega pode ser selecionada ou não, usando o comando select.

Example

 (define obj (build-cube))
 (grab obj)
 (selectable 0) ; agora ela nao vai ser "vista", quando chamar select
 (ungrab)

(backfacecull número-ajuste)

Returns void

Liga ou desliga o corte de face-traseira. Backface culling acelera a renderização removendo faces não orientadas em direção da câmera. É ligado por padrão, mas isto não é desejado sempre, eg para poligonos com dupla face.

Example

 (backfacecull 0)

(shader vertexprograma-string fragmentprogram-string)

Returns void

Abre, compila e ajusta o par de GLSL hardware shader para o estado de desenho atual, ou a primitiva pega. Requer OpenGL 2. Os dados uniformes do shader podem ser controlados via shader-set! e todas as pdatas são enviadas como um atributo por vértice ao shader.

Example

 ; you need to have built fluxus with GLSL=1
 (clear)
 (define s (with-state
     ; assign the shaders to the surface
     (shader "simple.vert.glsl" "simple.frag.glsl")
     (build-sphere 20 20)))

 (with-primitive s
     ; add and set the pdata - this is then picked up in the vertex shader
     ; as an input attribute called "testcol"
     (pdata-add "testcol" "v")
     ; set the testcol pdata with a random colour for every vertex
     (pdata-map!
         (lambda (c)
             (rndvec))
         "testcol"))

 (define (animate)
     (with-primitive s
         ; animate the deformamount uniform input parameter
         (shader-set! (list "deformamount" (cos (time))))))

 (every-frame (animate))

(shader vertexprograma-string fragmentprogram-string)

Returns void

Example

 ; you need to have built fluxus with GLSL=1
 (clear)

(clear-shader-cache)

Returns número-id-primitiva

Limpa o cache do shader.

Example

 (clear-shader-cache)

(shader-set! lista-argumentos)

Returns void

Ajusta os parâmetros do shader uniforme para o shader GLSL. A lista contém valores pares simbolos-strings, que relacionam os parâmetros de shader correspondentes nomes e valores

Example

 ; you need to have built fluxus with GLSL=1
 (clear)
 (define s (with-state
     ; assign the shaders to the surface
     (shader "simple.vert.glsl" "simple.frag.glsl")
     (build-sphere 20 20)))

 (with-primitive s
     ; add and set the pdata - this is then picked up in the vertex shader
     ; as an input attribute called "testcol"
     (pdata-add "testcol" "v")
     ; set the testcol pdata with a random colour for every vertex
     (pdata-map!
         (lambda (c)
             (rndvec))
         "testcol"))

 (define (animate)
     (with-primitive s
         ; animate the deformamount uniform input parameter
         (shader-set! (list "deformamount" (cos (time))))))

 (every-frame (animate))

(texture-params número-unidade-textura lista-parametros)

Returns void

Ajusta o estado de textura atual para a unidade de textura especificada. Esse estado controla como a textura é aplicada à superfície do objeto, e como é filtrada nos texels, ou miplevels. A unidade de textura é usada se você está usando multitextura - o padrão da unidade de textura é 0. Você talvez precise ler um pouco sobre OpenGL ou experimentar para descubrir mais sobre essas opções.

Example

 ; parameters are the following:
 ; tex-env : [modulate decal blend replace]
 ; min : [nearest linear nearest-mipmap-nearest linear-mipmap-nearest linear-mipmap-linear]
 ; mag : [nearest linear]
 ; wrap-s : [clamp repeat]
 ; wrap-t : [clamp repeat]
 ; wrap-r : [clamp repeat] (for cube maps)
 ; border-colour : (vector of length 4)
 ; priority : real number 0 -> 1
 ; env-colour : (vector of length 4)
 ; min-lod : real number (for mipmap blending - default -1000)
 ; max-lod : real number (for mipmap blending - default 1000)
 (texture-params 0 '(min nearest mag nearest))