Jump to content
  • Advertisement
Sign in to follow this  
  • entries
  • comments
  • views

Really weird bug: Emscripten / OpenGL shader related

Sign in to follow this  



This is just a quick short entry.

Today I tried to compile a small but fully working OpenGL ES 2 shader related code in Emscripten. It didn't work. After a LOT of time debugging I found out that if I call [font='courier new']glBindAttributeLocation(...)[/font] BEFORE actually linking the shader programit works perfectly. So the following code works fine:[code=auto:7]....glAttachShader(_programID, _fragmentShaderID);glAttachShader(_programID, _vertexShaderID);glBindAttribLocation(_programID, VERTEX_ARRAY, "a_position");glBindAttribLocation(_programID, COLOR_ARRAY, "a_color");glLinkProgram(_programID);.......
BUT the following code will DID NOT work with emscripten WebGL:[code=auto:7]....glAttachShader(_programID, _fragmentShaderID);glAttachShader(_programID, _vertexShaderID);glLinkProgram(_programID);glBindAttribLocation(_programID, VERTEX_ARRAY, "a_position");glBindAttribLocation(_programID, COLOR_ARRAY, "a_color");.......
So the best way is to get pre bound attribute location using use [font='courier new']glGetAttribLocation(..)[/font] rather than manually binding it:[code=auto:7]....if(!LoadProgramFromFile("Default.vert", "Default.frag")){ printf("Error Error loading program from file...\n"); return false;} _a_positionLoc = glGetAttribLocation(_programID, "a_position"); _a_color = glGetAttribLocation(_programID, "a_color");....
This may save you a LOT of headache smile.png

Happy coding !

Sign in to follow this  

1 Comment

Recommended Comments

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!