DGL
https://delphigl.com/forum/

Wieso nicht schwarz ?
https://delphigl.com/forum/viewtopic.php?f=20&t=11420
Seite 1 von 1

Autor:  mathias [ So Aug 30, 2015 20:27 ]
Betreff des Beitrags:  Wieso nicht schwarz ?

Ich habe folgender Shader-Code bei einem Lazarus-Programm.
Code:
  1. #version 330
  2. out vec4 FragColor;
  3. void main()
  4. {
  5.   FragColor=vec4(0.0, 0.0, 0.0, 1.0); // oder
  6.   FragColor=vec4(0.0, 0.0, 0.0, 0.5); // oder
  7.   FragColor=vec4(0.0, 0.0, 0.0, 0.0);
  8. }

Das zu rendernde Object bleibt schwarz, egal wie Alpha eingestellt.

Anders verhält es sich unter WebGL.

Code:
  1. gl_FragColor=vec4(0.0, 0.0, 0.0, 1.0); // schwarz
  2. gl_FragColor=vec4(0.0, 0.0, 0.0, 0.5);  // grau
  3. gl_FragColor=vec4(0.0, 0.0, 0.0, 0.0);  // schwarz


Bei beiden Version ist Alpha mit

Code:
  1.  
  2.     gl.enable(gl.DEPTH_TEST);
  3.     gl.depthFunc(gl.LESS);
  4.  
  5.     gl.enable(gl.BLEND);
  6.     gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); 
  7.  
  8.     gl.clearColor(0.0, 0.0, 0.0, 1.0);
  9.  

eingestellt und der Hintergrund auf schwarz.

Woran könnte dies liegen ?

Autor:  Sascha Willems [ So Aug 30, 2015 21:02 ]
Betreff des Beitrags:  Re: Wieso nicht schwarz ?

Das liegt evtl. am premultipliziertem Alpha den WebGL benutzt (Details : http://webglfundamentals.org/webgl/less ... alpha.html). OpenGL und WebGL gleichen sich zwar evtl. das die API angeht (WebGL basiert ja auf ES), aber der technische Untergrund ist i.d.R. ein ganz anderer.

Autor:  mathias [ Di Sep 01, 2015 16:09 ]
Betreff des Beitrags:  Re: Wieso nicht schwarz ?

Danke, so wie es aussieht, klappt es mit { alpha: false }.

Code:
  1. "use strict";
  2.  
  3. var gl = null;
  4.  
  5. function initGL() {
  6.  
  7.     var canvas = document.getElementById("WebGL-canvas");
  8.     try {
  9.         gl = canvas.getContext("experimental-webgl", { alpha: false });
  10.     } catch (e) {
  11.     }
  12.     if (!gl) {
  13.         try {
  14.             gl = canvas.getContext("webkit-3d", { alpha: false });
  15.         } catch (e) {
  16.         }
  17.     }
  18.     if (!gl) {
  19.         try {
  20.             gl = canvas.getContext("moz-webgl", { alpha: false });
  21.         } catch (e) {
  22.         }
  23.     }
  24.     if (!gl) {
  25.         try {
  26.             gl = canvas.getContext("webgl", { alpha: false });
  27.         } catch (e) {
  28.         }
  29.     }
  30.     if (!gl) {
  31.         alert("WebGL nicht gefunden. Grafik-Treiber, Browser oder Gafikkarte veraltet");
  32.     }
  33. }


So nebenbei stehen in deinem Link noch ein paar interessante Sachen.

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/