@@ -560,16 +560,16 @@ var LibraryGLEmulation = {
560
560
GL . shaderSources [ shader ] = source ;
561
561
dbg ( "glShaderSource: Output: \n" + source ) ;
562
562
#endif
563
- GLctx . shaderSource ( GL . shaders [ shader ] , source ) ;
563
+ GLctx . shaderSource ( GL . shaders . get ( shader ) , source ) ;
564
564
} ;
565
565
{ { { updateExport ( 'glShaderSource' ) } } }
566
566
567
567
var glCompileShader = _glCompileShader ;
568
568
_glCompileShader = _emscripten_glCompileShader = ( shader ) => {
569
- GLctx . compileShader ( GL . shaders [ shader ] ) ;
569
+ GLctx . compileShader ( GL . shaders . get ( shader ) ) ;
570
570
#if GL_DEBUG
571
- if ( ! GLctx . getShaderParameter ( GL . shaders [ shader ] , GLctx . COMPILE_STATUS ) ) {
572
- dbg ( 'Failed to compile shader: ' + GLctx . getShaderInfoLog ( GL . shaders [ shader ] ) ) ;
571
+ if ( ! GLctx . getShaderParameter ( GL . shaders . get ( shader ) , GLctx . COMPILE_STATUS ) ) {
572
+ dbg ( 'Failed to compile shader: ' + GLctx . getShaderInfoLog ( GL . shaders . get ( shader ) ) ) ;
573
573
dbg ( 'Info: ' + JSON . stringify ( GL . shaderInfos [ shader ] ) ) ;
574
574
dbg ( 'Original source: ' + GL . shaderOriginalSources [ shader ] ) ;
575
575
dbg ( 'Source: ' + GL . shaderSources [ shader ] ) ;
@@ -645,7 +645,7 @@ var LibraryGLEmulation = {
645
645
var glLinkProgram = _glLinkProgram ;
646
646
_glLinkProgram = _emscripten_glLinkProgram = ( program ) => {
647
647
if ( ! ( program in zeroUsedPrograms ) ) {
648
- GLctx . bindAttribLocation ( GL . programs [ program ] , 0 , 'a_position' ) ;
648
+ GLctx . bindAttribLocation ( GL . programs . get ( program ) , 0 , 'a_position' ) ;
649
649
}
650
650
glLinkProgram ( program ) ;
651
651
} ;
@@ -757,9 +757,9 @@ var LibraryGLEmulation = {
757
757
glDeleteObject__deps : [ 'glDeleteProgram' , 'glDeleteShader' ] ,
758
758
glDeleteObject__sig : 'vi' ,
759
759
glDeleteObject : function ( id ) {
760
- if ( GL . programs [ id ] ) {
760
+ if ( GL . programs . get ( id ) ) {
761
761
_glDeleteProgram ( id ) ;
762
- } else if ( GL . shaders [ id ] ) {
762
+ } else if ( GL . shaders . has ( id ) ) {
763
763
_glDeleteShader ( id ) ;
764
764
} else {
765
765
err ( 'WARNING: deleteObject received invalid id: ' + id ) ;
@@ -770,22 +770,22 @@ var LibraryGLEmulation = {
770
770
glGetObjectParameteriv__sig : 'viii' ,
771
771
glGetObjectParameteriv__deps : [ 'glGetProgramiv' , 'glGetShaderiv' ] ,
772
772
glGetObjectParameteriv : function ( id , type , result ) {
773
- if ( GL . programs [ id ] ) {
773
+ if ( GL . programs . has ( id ) ) {
774
774
if ( type == 0x8B84 ) { // GL_OBJECT_INFO_LOG_LENGTH_ARB
775
- var log = GLctx . getProgramInfoLog ( GL . programs [ id ] ) ;
775
+ var log = GLctx . getProgramInfoLog ( GL . programs . get ( id ) ) ;
776
776
if ( log === null ) log = '(unknown error)' ;
777
777
{ { { makeSetValue ( 'result' , '0' , 'log.length' , 'i32' ) } } } ;
778
778
return ;
779
779
}
780
780
_glGetProgramiv ( id , type , result ) ;
781
- } else if ( GL . shaders [ id ] ) {
781
+ } else if ( GL . shaders . has ( id ) ) {
782
782
if ( type == 0x8B84 ) { // GL_OBJECT_INFO_LOG_LENGTH_ARB
783
- var log = GLctx . getShaderInfoLog ( GL . shaders [ id ] ) ;
783
+ var log = GLctx . getShaderInfoLog ( GL . shaders . get ( id ) ) ;
784
784
if ( log === null ) log = '(unknown error)' ;
785
785
{ { { makeSetValue ( 'result' , '0' , 'log.length' , 'i32' ) } } } ;
786
786
return ;
787
787
} else if ( type == 0x8B88 ) { // GL_OBJECT_SHADER_SOURCE_LENGTH_ARB
788
- var source = GLctx . getShaderSource ( GL . shaders [ id ] ) ;
788
+ var source = GLctx . getShaderSource ( GL . shaders . get ( id ) ) ;
789
789
if ( source === null ) return ; // If an error occurs, nothing will be written to result
790
790
{ { { makeSetValue ( 'result' , '0' , 'source.length' , 'i32' ) } } } ;
791
791
return ;
@@ -800,9 +800,9 @@ var LibraryGLEmulation = {
800
800
glGetInfoLog__deps : [ 'glGetProgramInfoLog' , 'glGetShaderInfoLog' ] ,
801
801
glGetInfoLog__sig : 'viiii' ,
802
802
glGetInfoLog : function ( id , maxLength , length , infoLog ) {
803
- if ( GL . programs [ id ] ) {
803
+ if ( GL . programs . has ( id ) ) {
804
804
_glGetProgramInfoLog ( id , maxLength , length , infoLog ) ;
805
- } else if ( GL . shaders [ id ] ) {
805
+ } else if ( GL . shaders . has ( id ) ) {
806
806
_glGetShaderInfoLog ( id , maxLength , length , infoLog ) ;
807
807
} else {
808
808
err ( 'WARNING: glGetInfoLog received invalid id: ' + id ) ;
@@ -2207,14 +2207,14 @@ var LibraryGLEmulation = {
2207
2207
var uTexMatrixPrefix = GLImmediate . useTextureMatrix ? 'u_textureMatrix' : null ;
2208
2208
2209
2209
if ( useCurrProgram ) {
2210
- if ( GL . shaderInfos [ GL . programShaders [ GL . currProgram ] [ 0 ] ] . type == GLctx . VERTEX_SHADER ) {
2211
- this . vertexShader = GL . shaders [ GL . programShaders [ GL . currProgram ] [ 0 ] ] ;
2212
- this . fragmentShader = GL . shaders [ GL . programShaders [ GL . currProgram ] [ 1 ] ] ;
2210
+ if ( GL . shaderInfos [ GL . programShaders . get ( GL . currProgram ) [ 0 ] ] . type == GLctx . VERTEX_SHADER ) {
2211
+ this . vertexShader = GL . shaders . get ( GL . programShaders [ GL . currProgram ] [ 0 ] ) ;
2212
+ this . fragmentShader = GL . shaders . get ( GL . programShaders [ GL . currProgram ] [ 1 ] ) ;
2213
2213
} else {
2214
- this . vertexShader = GL . shaders [ GL . programShaders [ GL . currProgram ] [ 1 ] ] ;
2215
- this . fragmentShader = GL . shaders [ GL . programShaders [ GL . currProgram ] [ 0 ] ] ;
2214
+ this . vertexShader = GL . shaders . get ( GL . programShaders [ GL . currProgram ] [ 1 ] ) ;
2215
+ this . fragmentShader = GL . shaders . get ( GL . programShaders [ GL . currProgram ] [ 0 ] ) ;
2216
2216
}
2217
- this . program = GL . programs [ GL . currProgram ] ;
2217
+ this . program = GL . programs . get ( GL . currProgram ) ;
2218
2218
this . usedTexUnitList = [ ] ;
2219
2219
} else {
2220
2220
// IMPORTANT NOTE: If you parameterize the shader source based on any runtime values
@@ -3568,31 +3568,28 @@ var LibraryGLEmulation = {
3568
3568
emulGlGenVertexArrays__sig : 'vii' ,
3569
3569
emulGlGenVertexArrays : function ( n , vaos ) {
3570
3570
for ( var i = 0 ; i < n ; i ++ ) {
3571
- var id = GL . getNewId ( GLEmulation . vaos ) ;
3572
- GLEmulation . vaos [ id ] = {
3573
- id : id ,
3571
+ var vao = {
3574
3572
arrayBuffer : 0 ,
3575
3573
elementArrayBuffer : 0 ,
3576
3574
enabledVertexAttribArrays : { } ,
3577
3575
vertexAttribPointers : { } ,
3578
3576
enabledClientStates : { } ,
3579
3577
} ;
3580
- { { { makeSetValue ( 'vaos' , 'i*4' , 'id' , 'i32' ) } } } ;
3578
+ vao . id = GLEmulation . vaos . allocate ( vao ) ;
3579
+ { { { makeSetValue ( 'vaos' , 'i*4' , 'vao.id' , 'i32' ) } } } ;
3581
3580
}
3582
3581
} ,
3583
3582
emulGlDeleteVertexArrays__sig : 'vii' ,
3584
3583
emulGlDeleteVertexArrays : function ( n , vaos ) {
3585
3584
for ( var i = 0 ; i < n ; i ++ ) {
3586
3585
var id = { { { makeGetValue ( 'vaos' , 'i*4' , 'i32' ) } } } ;
3587
- GLEmulation . vaos [ id ] = null ;
3586
+ GLEmulation . vaos . free ( id ) ;
3588
3587
if ( GLEmulation . currentVao && GLEmulation . currentVao . id == id ) GLEmulation . currentVao = null ;
3589
3588
}
3590
3589
} ,
3591
3590
emulGlIsVertexArray__sig: 'vi' ,
3592
3591
emulGlIsVertexArray : function ( array ) {
3593
- var vao = GLEmulation . vaos [ array ] ;
3594
- if ( ! vao ) return 0 ;
3595
- return 1 ;
3592
+ return GLEmulation . vaos . has ( array ) ;
3596
3593
} ,
3597
3594
emulGlBindVertexArray__deps : [ 'glBindBuffer' , 'glEnableVertexAttribArray' , 'glVertexAttribPointer' , 'glEnableClientState' ] ,
3598
3595
emulGlBindVertexArray__sig : 'vi' ,
@@ -3611,7 +3608,7 @@ var LibraryGLEmulation = {
3611
3608
GLImmediate . modifiedClientAttributes = true ;
3612
3609
if ( vao ) {
3613
3610
// replay vao
3614
- var info = GLEmulation . vaos [ vao ] ;
3611
+ var info = GLEmulation . vaos . get ( vao ) ;
3615
3612
_glBindBuffer ( GLctx . ARRAY_BUFFER , info . arrayBuffer ) ; // XXX overwrite current binding?
3616
3613
_glBindBuffer ( GLctx . ELEMENT_ARRAY_BUFFER , info . elementArrayBuffer ) ;
3617
3614
for ( var vaa in info . enabledVertexAttribArrays ) {
0 commit comments