@@ -564,15 +564,15 @@ var LibraryGLEmulation = {
564
564
GL . shaderSources [ shader ] = source ;
565
565
dbg ( "glShaderSource: Output: \n" + source ) ;
566
566
#endif
567
- GLctx . shaderSource ( GL . shaders [ shader ] , source ) ;
567
+ GLctx . shaderSource ( GL . shaders . get ( shader ) , source ) ;
568
568
} ;
569
569
570
570
var glCompileShader = _glCompileShader ;
571
571
_glCompileShader = _emscripten_glCompileShader = ( shader ) => {
572
- GLctx . compileShader ( GL . shaders [ shader ] ) ;
572
+ GLctx . compileShader ( GL . shaders . get ( shader ) ) ;
573
573
#if GL_DEBUG
574
- if ( ! GLctx . getShaderParameter ( GL . shaders [ shader ] , GLctx . COMPILE_STATUS ) ) {
575
- dbg ( `Failed to compile shader: ${ GLctx . getShaderInfoLog ( GL . shaders [ shader ] ) } ` ) ;
574
+ if ( ! GLctx . getShaderParameter ( GL . shaders . get ( shader ) , GLctx . COMPILE_STATUS ) ) {
575
+ dbg ( `Failed to compile shader: ${ GLctx . getShaderInfoLog ( GL . shaders . get ( shader ) ) } ` ) ;
576
576
dbg ( `Info: ${ JSON . stringify ( GL . shaderInfos [ shader ] ) } ` ) ;
577
577
dbg ( `Original source: ${ GL . shaderOriginalSources [ shader ] } ` ) ;
578
578
dbg ( `Source: ${ GL . shaderSources [ shader ] } ` ) ;
@@ -642,7 +642,7 @@ var LibraryGLEmulation = {
642
642
var glLinkProgram = _glLinkProgram ;
643
643
_glLinkProgram = _emscripten_glLinkProgram = ( program ) => {
644
644
if ( ! ( program in zeroUsedPrograms ) ) {
645
- GLctx . bindAttribLocation ( GL . programs [ program ] , 0 , 'a_position' ) ;
645
+ GLctx . bindAttribLocation ( GL . programs . get ( program ) , 0 , 'a_position' ) ;
646
646
}
647
647
glLinkProgram ( program ) ;
648
648
} ;
@@ -747,9 +747,9 @@ var LibraryGLEmulation = {
747
747
748
748
glDeleteObject__deps: [ 'glDeleteProgram' , 'glDeleteShader' ] ,
749
749
glDeleteObject : ( id ) => {
750
- if ( GL . programs [ id ] ) {
750
+ if ( GL . programs . has ( id ) ) {
751
751
_glDeleteProgram ( id ) ;
752
- } else if ( GL . shaders [ id ] ) {
752
+ } else if ( GL . shaders . has ( id ) ) {
753
753
_glDeleteShader ( id ) ;
754
754
} else {
755
755
err ( `WARNING: deleteObject received invalid id: ${ id } ` ) ;
@@ -759,22 +759,22 @@ var LibraryGLEmulation = {
759
759
760
760
glGetObjectParameteriv__deps : [ 'glGetProgramiv' , 'glGetShaderiv' ] ,
761
761
glGetObjectParameteriv : ( id , type , result ) => {
762
- if ( GL . programs [ id ] ) {
762
+ if ( GL . programs . has ( id ) ) {
763
763
if ( type == 0x8B84 ) { // GL_OBJECT_INFO_LOG_LENGTH_ARB
764
- var log = GLctx . getProgramInfoLog ( GL . programs [ id ] ) ;
764
+ var log = GLctx . getProgramInfoLog ( GL . programs . get ( id ) ) ;
765
765
if ( log === null ) log = '(unknown error)' ;
766
766
{ { { makeSetValue ( 'result' , '0' , 'log.length' , 'i32' ) } } } ;
767
767
return ;
768
768
}
769
769
_glGetProgramiv ( id , type , result ) ;
770
- } else if ( GL . shaders [ id ] ) {
770
+ } else if ( GL . shaders . has ( id ) ) {
771
771
if ( type == 0x8B84 ) { // GL_OBJECT_INFO_LOG_LENGTH_ARB
772
- var log = GLctx . getShaderInfoLog ( GL . shaders [ id ] ) ;
772
+ var log = GLctx . getShaderInfoLog ( GL . shaders . get ( id ) ) ;
773
773
if ( log === null ) log = '(unknown error)' ;
774
774
{ { { makeSetValue ( 'result' , '0' , 'log.length' , 'i32' ) } } } ;
775
775
return ;
776
776
} else if ( type == 0x8B88 ) { // GL_OBJECT_SHADER_SOURCE_LENGTH_ARB
777
- var source = GLctx . getShaderSource ( GL . shaders [ id ] ) ;
777
+ var source = GLctx . getShaderSource ( GL . shaders . get ( id ) ) ;
778
778
if ( source === null ) return ; // If an error occurs, nothing will be written to result
779
779
{ { { makeSetValue ( 'result' , '0' , 'source.length' , 'i32' ) } } } ;
780
780
return ;
@@ -788,9 +788,9 @@ var LibraryGLEmulation = {
788
788
789
789
glGetInfoLog__deps : [ 'glGetProgramInfoLog' , 'glGetShaderInfoLog' ] ,
790
790
glGetInfoLog : ( id , maxLength , length , infoLog ) = > {
791
- if ( GL . programs [ id ] ) {
791
+ if ( GL . programs . has ( id ) ) {
792
792
_glGetProgramInfoLog ( id , maxLength , length , infoLog ) ;
793
- } else if ( GL . shaders [ id ] ) {
793
+ } else if ( GL . shaders . has ( id ) ) {
794
794
_glGetShaderInfoLog ( id , maxLength , length , infoLog ) ;
795
795
} else {
796
796
err ( `WARNING: glGetInfoLog received invalid id: ${ id } ` ) ;
@@ -2158,13 +2158,13 @@ var LibraryGLEmulation = {
2158
2158
2159
2159
if ( useCurrProgram ) {
2160
2160
if ( GL . shaderInfos [ GL . programShaders [ GL . currProgram ] [ 0 ] ] . type == GLctx . VERTEX_SHADER ) {
2161
- this . vertexShader = GL . shaders [ GL . programShaders [ GL . currProgram ] [ 0 ] ] ;
2162
- this . fragmentShader = GL . shaders [ GL . programShaders [ GL . currProgram ] [ 1 ] ] ;
2161
+ this . vertexShader = GL . shaders . get ( GL . programShaders [ GL . currProgram ] [ 0 ] ) ;
2162
+ this . fragmentShader = GL . shaders . get ( GL . programShaders [ GL . currProgram ] [ 1 ] ) ;
2163
2163
} else {
2164
- this . vertexShader = GL . shaders [ GL . programShaders [ GL . currProgram ] [ 1 ] ] ;
2165
- this . fragmentShader = GL . shaders [ GL . programShaders [ GL . currProgram ] [ 0 ] ] ;
2164
+ this . vertexShader = GL . shaders . get ( GL . programShaders [ GL . currProgram ] [ 1 ] ) ;
2165
+ this . fragmentShader = GL . shaders . get ( GL . programShaders [ GL . currProgram ] [ 0 ] ) ;
2166
2166
}
2167
- this . program = GL . programs [ GL . currProgram ] ;
2167
+ this . program = GL . programs . get ( GL . currProgram ) ;
2168
2168
this . usedTexUnitList = [ ] ;
2169
2169
} else {
2170
2170
// IMPORTANT NOTE: If you parameterize the shader source based on any runtime values
@@ -3533,30 +3533,25 @@ var LibraryGLEmulation = {
3533
3533
$emulGlGenVertexArrays__deps: [ '$GLEmulation' ] ,
3534
3534
$emulGlGenVertexArrays : ( n , vaos ) => {
3535
3535
for ( var i = 0 ; i < n ; i ++ ) {
3536
- var id = GL . getNewId ( GLEmulation . vaos ) ;
3537
- GLEmulation . vaos [ id ] = {
3538
- id,
3536
+ var vao = {
3539
3537
arrayBuffer : 0 ,
3540
3538
elementArrayBuffer : 0 ,
3541
3539
enabledVertexAttribArrays : { } ,
3542
3540
vertexAttribPointers : { } ,
3543
3541
enabledClientStates : { } ,
3544
3542
} ;
3545
- { { { makeSetValue ( 'vaos' , 'i*4' , 'id' , 'i32' ) } } } ;
3543
+ vao . id = GLEmulation . vaos . allocate ( vao ) ;
3544
+ { { { makeSetValue ( 'vaos' , 'i*4' , 'vao.id' , 'i32' ) } } } ;
3546
3545
}
3547
3546
} ,
3548
3547
$emulGlDeleteVertexArrays : ( n , vaos ) = > {
3549
3548
for ( var i = 0 ; i < n ; i ++ ) {
3550
3549
var id = { { { makeGetValue ( 'vaos' , 'i*4' , 'i32' ) } } } ;
3551
- GLEmulation . vaos [ id ] = null ;
3550
+ GLEmulation . vaos . free ( id ) ;
3552
3551
if ( GLEmulation . currentVao && GLEmulation . currentVao . id == id ) GLEmulation . currentVao = null ;
3553
3552
}
3554
3553
} ,
3555
- $emulGlIsVertexArray: ( array ) => {
3556
- var vao = GLEmulation . vaos [ array ] ;
3557
- if ( ! vao ) return 0 ;
3558
- return 1 ;
3559
- } ,
3554
+ $emulGlIsVertexArray: ( array ) => GLEmulation . vaos . has ( array ) ,
3560
3555
$emulGlBindVertexArray__deps : [ 'glBindBuffer' , 'glEnableVertexAttribArray' , 'glVertexAttribPointer' , 'glEnableClientState' ] ,
3561
3556
$emulGlBindVertexArray : ( vao ) = > {
3562
3557
// undo vao-related things, wipe the slate clean, both for vao of 0 or an actual vao
@@ -3573,7 +3568,7 @@ var LibraryGLEmulation = {
3573
3568
GLImmediate . modifiedClientAttributes = true ;
3574
3569
if ( vao ) {
3575
3570
// replay vao
3576
- var info = GLEmulation . vaos [ vao ] ;
3571
+ var info = GLEmulation . vaos . get ( vao ) ;
3577
3572
_glBindBuffer ( GLctx . ARRAY_BUFFER , info . arrayBuffer ) ; // XXX overwrite current binding?
3578
3573
_glBindBuffer ( GLctx . ELEMENT_ARRAY_BUFFER , info . elementArrayBuffer ) ;
3579
3574
for ( var vaa in info . enabledVertexAttribArrays ) {
0 commit comments