Ordinea de cartografiere a texturilor afectează funcționarea canalului alfa

Alo Situația este următoarea: generez o textura cu un canal alfa și o suprapun pe toate planurile cubului. Problema este că, prin intermediul unor zone absolut transparente (canal alfa = 0) pe planurile cubului, nu sunt vizibile alte planuri. Metoda de torsiune a cubului :) a realizat că aceasta depinde de ordinea de cartografiere a texturii pe fața în funcția display (). De exemplu, dacă te uiți prin ultimul în ordinea maparea texturii, că prin ea se poate vedea toate celelalte fețe, dar dacă te uiți la cubul prin impunerea prima de ordine, celelalte fețe nu sunt vizibile.







Ordinea de cartografiere a texturilor afectează funcționarea canalului alfa

Ordinea de cartografiere a texturilor afectează funcționarea canalului alfa






Vă mulțumesc pentru atenție și ajutor.

Da, faptul este că, în funcție de ordinea de desen din spate se confruntă cu tine eliminat, deoarece acestea nu au trecut testul de adâncime, iar în cazul în care testul de adâncime a fost oprită, acestea vor fi trase pe partea de sus a părții din față, care nu este un comportament corect.

În general, nu se poate face fără a se sorta în profunzime fețele translucide. Mai întâi trebuie să desenați cele mai îndepărtate, apoi cele mai apropiate. Cu testul de adâncime inclus și amestecarea, desigur. Există un mod mai avansat - Peeling în adâncime. Dacă nu confundăm nimic, atunci este scos întreaga scenă (fără a sorta triunghiurile ca atare), dar de mai multe ori cu diferite planuri de tăiere în profunzime, apoi stratificate. Calitatea depinde de numărul de treceri.

Pentru cubul și alte polyhedra semi-transparente convexe, vă sfătuiesc următoarea abordare:

  1. Include clipping fețele posterioare (glEnable (GL_CULL_FACE). Dacă aveți OpenGL).
  2. Desenați numai fețele posterioare (prima - glCullFace (GL_FRONT), apoi - RenderCube).
  3. Desenați numai fețele frontale (prima - glCullFace (GL_BACK), apoi din nou RenderCube).

Răspuns dat la 23 august '12 la 14:47

Apropo, dacă nu au margini translucide, și alfa-canal discret sare de la 0 la 1.0f, ca în exemplul de mai sus, o mare lucrare și doar trece testul alfa (în OpenGL se pare ca acest lucru: glEnable (GL_ALPHA_TEST); glAlphaFunc (GL_GEQUAL, 0,5) - acest lucru înseamnă că valoarea alfa în textura 0-0.5 nu este nimic nu va fi tras în la 0,5-1,0 - Egal) Amestecul ca atare, în acest caz, nici măcar nu au nevoie .. - allcreater Aug 27 '12 la 8:07 am







Trimiteți-le prietenilor: