Implement shaders as singletons
This commit is contained in:
+48
-42
@@ -1,4 +1,5 @@
|
|||||||
goog.provide('ol.webgl.Map');
|
goog.provide('ol.webgl.Map');
|
||||||
|
goog.provide('ol.webgl.map.shader');
|
||||||
|
|
||||||
goog.require('goog.dispose');
|
goog.require('goog.dispose');
|
||||||
goog.require('goog.dom');
|
goog.require('goog.dom');
|
||||||
@@ -18,7 +19,6 @@ goog.require('ol.webgl.shader.Fragment');
|
|||||||
goog.require('ol.webgl.shader.Vertex');
|
goog.require('ol.webgl.shader.Vertex');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @define {boolean} Enable WebGL debugging.
|
* @define {boolean} Enable WebGL debugging.
|
||||||
*/
|
*/
|
||||||
@@ -26,6 +26,51 @@ ol.DEBUG_WEBGL = false;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
* @extends {ol.webgl.shader.Fragment}
|
||||||
|
*/
|
||||||
|
ol.webgl.map.shader.Fragment = function() {
|
||||||
|
goog.base(this, [
|
||||||
|
'precision mediump float;',
|
||||||
|
'',
|
||||||
|
'uniform float uAlpha;',
|
||||||
|
'uniform sampler2D uTexture;',
|
||||||
|
'',
|
||||||
|
'varying vec2 vTexCoord;',
|
||||||
|
'',
|
||||||
|
'void main(void) {',
|
||||||
|
' gl_FragColor = vec4(texture2D(uTexture, vTexCoord).rgb, uAlpha);',
|
||||||
|
'}'
|
||||||
|
].join('\n'));
|
||||||
|
};
|
||||||
|
goog.inherits(ol.webgl.map.shader.Fragment, ol.webgl.shader.Fragment);
|
||||||
|
goog.addSingletonGetter(ol.webgl.map.shader.Fragment);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
* @extends {ol.webgl.shader.Vertex}
|
||||||
|
*/
|
||||||
|
ol.webgl.map.shader.Vertex = function() {
|
||||||
|
goog.base(this, [
|
||||||
|
'attribute vec2 aPosition;',
|
||||||
|
'attribute vec2 aTexCoord;',
|
||||||
|
'',
|
||||||
|
'varying vec2 vTexCoord;',
|
||||||
|
'',
|
||||||
|
'void main(void) {',
|
||||||
|
' gl_Position = vec4(aPosition, 0., 1.);',
|
||||||
|
' vTexCoord = aTexCoord;',
|
||||||
|
'}'
|
||||||
|
].join('\n'));
|
||||||
|
};
|
||||||
|
goog.inherits(ol.webgl.map.shader.Vertex, ol.webgl.shader.Vertex);
|
||||||
|
goog.addSingletonGetter(ol.webgl.map.shader.Vertex);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @constructor
|
* @constructor
|
||||||
* @extends {ol.Map}
|
* @extends {ol.Map}
|
||||||
@@ -90,13 +135,13 @@ ol.webgl.Map = function(target, opt_values) {
|
|||||||
* @private
|
* @private
|
||||||
* @type {ol.webgl.shader.Fragment}
|
* @type {ol.webgl.shader.Fragment}
|
||||||
*/
|
*/
|
||||||
this.fragmentShader_ = ol.webgl.Map.createFragmentShader_();
|
this.fragmentShader_ = ol.webgl.map.shader.Fragment.getInstance();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
* @type {ol.webgl.shader.Vertex}
|
* @type {ol.webgl.shader.Vertex}
|
||||||
*/
|
*/
|
||||||
this.vertexShader_ = ol.webgl.Map.createVertexShader_();
|
this.vertexShader_ = ol.webgl.map.shader.Vertex.getInstance();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
@@ -115,45 +160,6 @@ ol.webgl.Map = function(target, opt_values) {
|
|||||||
goog.inherits(ol.webgl.Map, ol.Map);
|
goog.inherits(ol.webgl.Map, ol.Map);
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @private
|
|
||||||
* @return {ol.webgl.shader.Fragment} Fragment shader.
|
|
||||||
*/
|
|
||||||
ol.webgl.Map.createFragmentShader_ = function() {
|
|
||||||
return new ol.webgl.shader.Fragment([
|
|
||||||
'precision mediump float;',
|
|
||||||
'',
|
|
||||||
'uniform float uAlpha;',
|
|
||||||
'uniform sampler2D uTexture;',
|
|
||||||
'',
|
|
||||||
'varying vec2 vTexCoord;',
|
|
||||||
'',
|
|
||||||
'void main(void) {',
|
|
||||||
' gl_FragColor = vec4(texture2D(uTexture, vTexCoord).rgb, uAlpha);',
|
|
||||||
'}'
|
|
||||||
].join('\n'));
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @private
|
|
||||||
* @return {ol.webgl.shader.Vertex} Vertex shader.
|
|
||||||
*/
|
|
||||||
ol.webgl.Map.createVertexShader_ = function() {
|
|
||||||
return new ol.webgl.shader.Vertex([
|
|
||||||
'attribute vec2 aPosition;',
|
|
||||||
'attribute vec2 aTexCoord;',
|
|
||||||
'',
|
|
||||||
'varying vec2 vTexCoord;',
|
|
||||||
'',
|
|
||||||
'void main(void) {',
|
|
||||||
' gl_Position = vec4(aPosition, 0., 1.);',
|
|
||||||
' vTexCoord = aTexCoord;',
|
|
||||||
'}'
|
|
||||||
].join('\n'));
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritDoc
|
* @inheritDoc
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user