Skip to content

Commit

Permalink
hide some more gl functions from APIs
Browse files Browse the repository at this point in the history
  • Loading branch information
robertmuth committed Feb 25, 2017
1 parent 1771af5 commit 19758dd
Show file tree
Hide file tree
Showing 9 changed files with 36 additions and 20 deletions.
2 changes: 1 addition & 1 deletion example/animation/animation.dart
Expand Up @@ -75,7 +75,7 @@ void main() {
new StatsFps(HTML.document.getElementById("stats"), "blue", "gray");
HTML.CanvasElement canvas = HTML.document.querySelector('#webgl-canvas');
ChronosGL chronosGL = new ChronosGL(canvas);
chronosGL.gl.enable(WEBGL.CULL_FACE);
chronosGL.enable(WEBGL.CULL_FACE);
OrbitCamera orbit = new OrbitCamera(5000.0);
Perspective perspective = new Perspective(orbit, 1.0, 10000.0);

Expand Down
2 changes: 1 addition & 1 deletion example/bubble/bubble.dart
Expand Up @@ -43,7 +43,7 @@ void main() {
new StatsFps(HTML.document.getElementById("stats"), "blue", "gray");
HTML.CanvasElement canvas = HTML.document.querySelector('#webgl-canvas');
ChronosGL chronosGL = new ChronosGL(canvas);
chronosGL.gl.enable(WEBGL.CULL_FACE);
chronosGL.enable(WEBGL.CULL_FACE);

OrbitCamera orbit = new OrbitCamera(5.0, 10.0);
Perspective perspective = new Perspective(orbit);
Expand Down
3 changes: 2 additions & 1 deletion example/light/light.dart
Expand Up @@ -37,7 +37,8 @@ void main() {
new StatsFps(HTML.document.getElementById("stats"), "blue", "gray");
HTML.CanvasElement canvas = HTML.document.querySelector('#webgl-canvas');
ChronosGL chronosGL = new ChronosGL(canvas);
chronosGL.gl.enable(WEBGL.CULL_FACE);
chronosGL.enable(WEBGL.CULL_FACE);

OrbitCamera orbit = new OrbitCamera(50.0, 10.0);
orbit.setPos(0.0, 0.0, 56.0);
Perspective perspective = new Perspective(orbit, 0.1, 10000.0);
Expand Down
3 changes: 1 addition & 2 deletions example/wireframe/wireframe.dart
Expand Up @@ -13,6 +13,7 @@ void main() {

HTML.CanvasElement canvas = HTML.document.querySelector('#webgl-canvas');
ChronosGL chronosGL = new ChronosGL(canvas);
chronosGL.enable(WEBGL.CULL_FACE);

var ext = GetGlExtensionStandardDerivatives(chronosGL);
if (ext == null) HTML.window.alert("OES_standard_derivatives not supported");
Expand Down Expand Up @@ -96,8 +97,6 @@ void main() {
resolutionChange(null);
HTML.window.onResize.listen(resolutionChange);

chronosGL.gl.enable(WEBGL.CULL_FACE);

double _lastTimeMs = 0.0;
void animate(timeMs) {
timeMs = 0.0 + timeMs;
Expand Down
3 changes: 1 addition & 2 deletions example/wireframe2/wireframe2.dart
Expand Up @@ -13,6 +13,7 @@ void main() {

HTML.CanvasElement canvas = HTML.document.querySelector('#webgl-canvas');
ChronosGL chronosGL = new ChronosGL(canvas);
chronosGL.enable(WEBGL.CULL_FACE);

OrbitCamera orbit = new OrbitCamera(25.0, 10.0);
Perspective perspective = new Perspective(orbit);
Expand Down Expand Up @@ -91,8 +92,6 @@ void main() {
resolutionChange(null);
HTML.window.onResize.listen(resolutionChange);

chronosGL.gl.enable(WEBGL.CULL_FACE);

double _lastTimeMs = 0.0;
void animate(timeMs) {
timeMs = 0.0 + timeMs;
Expand Down
17 changes: 17 additions & 0 deletions lib/src/core/chronosgl.dart
Expand Up @@ -70,7 +70,24 @@ class ChronosGL {
return b;
}

void bindFramebuffer(int kind, dynamic framebuffer) {
gl.bindFramebuffer(kind, framebuffer);
}

void enable(int kind) {
gl.enable(kind);
}

void disable(int kind) {
gl.disable(kind);
}

void clear(int kind) {
gl.clear(kind);
}

void setLineWidth(int w) {
gl.lineWidth(w);
}

}
12 changes: 6 additions & 6 deletions lib/src/core/framebuffer.dart
Expand Up @@ -19,20 +19,20 @@ class ChronosFramebuffer {
WEBGL.DEPTH_COMPONENT, WEBGL.UNSIGNED_SHORT);
//depthTexture.Install();

_cgl.gl.bindFramebuffer(WEBGL.FRAMEBUFFER, framebuffer);
_cgl.bindFramebuffer(WEBGL.FRAMEBUFFER, framebuffer);
_cgl.gl.framebufferTexture2D(WEBGL.FRAMEBUFFER, WEBGL.COLOR_ATTACHMENT0,
WEBGL.TEXTURE_2D, colorTexture.GetTexture(), 0);
_cgl.gl.framebufferTexture2D(WEBGL.FRAMEBUFFER, WEBGL.DEPTH_ATTACHMENT,
WEBGL.TEXTURE_2D, depthTexture.GetTexture(), 0);

_cgl.gl.bindTexture(WEBGL.TEXTURE_2D, null);
_cgl.gl.bindFramebuffer(WEBGL.FRAMEBUFFER, null);
_cgl.bindFramebuffer(WEBGL.FRAMEBUFFER, null);
}

ChronosFramebuffer.FromTexture(this._cgl, this.colorTexture) {
framebuffer = _cgl.gl.createFramebuffer();

_cgl.gl.bindFramebuffer(WEBGL.FRAMEBUFFER, framebuffer);
_cgl.bindFramebuffer(WEBGL.FRAMEBUFFER, framebuffer);
_cgl.gl.framebufferTexture2D(WEBGL.FRAMEBUFFER, WEBGL.COLOR_ATTACHMENT0,
WEBGL.TEXTURE_2D, colorTexture.GetTexture(), 0);

Expand All @@ -48,7 +48,7 @@ class ChronosFramebuffer {
if (err != WEBGL.FRAMEBUFFER_COMPLETE) {
throw "Error Incomplete Framebuffer: ${err}";
}
_cgl.gl.bindFramebuffer(WEBGL.FRAMEBUFFER, null);
_cgl.bindFramebuffer(WEBGL.FRAMEBUFFER, null);
}

bool ready() {
Expand All @@ -63,7 +63,7 @@ class ChronosFramebuffer {
// e.g. into Float32List
// BROKEN: https://github.com/dart-lang/sdk/issues/11614
void ExtractData(var buf, int x, int y, int w, int h) {
_cgl.gl.bindFramebuffer(WEBGL.FRAMEBUFFER, framebuffer);
_cgl.bindFramebuffer(WEBGL.FRAMEBUFFER, framebuffer);
// RGB (3 values per pixel), RGBA (4 values per pixel)
// see TypeToNumChannels
int implFormat = _cgl.gl
Expand All @@ -74,7 +74,7 @@ class ChronosFramebuffer {
.getParameter(WEBGL.RenderingContext.IMPLEMENTATION_COLOR_READ_TYPE);
print("impl type: ${implType}");
_cgl.gl.readPixels(x, y, w, h, implFormat, implType, buf);
_cgl.gl.bindFramebuffer(WEBGL.FRAMEBUFFER, null);
_cgl.bindFramebuffer(WEBGL.FRAMEBUFFER, null);
}
}

Expand Down
6 changes: 3 additions & 3 deletions lib/src/core/render_phase.dart
Expand Up @@ -22,9 +22,9 @@ class RenderPhase extends NamedEntity {

void draw(List<RenderInputProvider> inputs, [List<DrawStats> stats = null]) {
if (_framebuffer == null) {
_cgl.gl.bindFramebuffer(WEBGL.FRAMEBUFFER, null);
_cgl.bindFramebuffer(WEBGL.FRAMEBUFFER, null);
} else {
_cgl.gl.bindFramebuffer(WEBGL.FRAMEBUFFER, _framebuffer.framebuffer);
_cgl.bindFramebuffer(WEBGL.FRAMEBUFFER, _framebuffer.framebuffer);
}
assert(viewPortW > 0 && viewPortH > 0);
_cgl.gl.viewport(viewPortX, viewPortY, viewPortW, viewPortH);
Expand All @@ -33,7 +33,7 @@ class RenderPhase extends NamedEntity {
int mode = 0;
if (clearColorBuffer) mode |= WEBGL.COLOR_BUFFER_BIT;
if (clearDepthBuffer) mode |= WEBGL.DEPTH_BUFFER_BIT;
_cgl.gl.clear(mode);
_cgl.clear(mode);
}

for (RenderProgram prg in _programs) {
Expand Down
8 changes: 4 additions & 4 deletions lib/src/core/shader_program.dart
Expand Up @@ -74,19 +74,19 @@ class ShaderProgram extends RenderProgram {
break;
case cDepthTest:
if (val == true) {
_cgl.gl.enable(WEBGL.DEPTH_TEST);
_cgl.enable(WEBGL.DEPTH_TEST);
} else {
_cgl.gl.disable(WEBGL.DEPTH_TEST);
_cgl.disable(WEBGL.DEPTH_TEST);
}
break;
case cDepthWrite:
_cgl.gl.depthMask(val);
break;
case cBlend:
if (val == true) {
_cgl.gl.enable(WEBGL.BLEND);
_cgl.enable(WEBGL.BLEND);
} else {
_cgl.gl.disable(WEBGL.BLEND);
_cgl.disable(WEBGL.BLEND);
}
break;
case cBlendEquation:
Expand Down

0 comments on commit 19758dd

Please sign in to comment.