diff options
author | Christoph Helma <helma@in-silico.ch> | 2017-07-18 16:49:45 +0200 |
---|---|---|
committer | Christoph Helma <helma@in-silico.ch> | 2017-07-18 16:49:45 +0200 |
commit | 10a19b6381d24c4de0ff07836131dc7f809c65cc (patch) | |
tree | 203793b05adc5c6e2234c58bfd3407e3a37bc80d | |
parent | ceca3527ef89f4b6eea14b1fcc4c68d0b235778f (diff) |
multiple textures
-rw-r--r-- | shader.frag | 4 | ||||
-rw-r--r-- | sv.c | 64 |
2 files changed, 10 insertions, 58 deletions
diff --git a/shader.frag b/shader.frag index 53db428..49740ac 100644 --- a/shader.frag +++ b/shader.frag @@ -26,7 +26,7 @@ void main (void) { vec4 i4 = texture2D(img3,st); i1 = mix(i1,i2,sin(time)); i2 = mix(i3,i4,cos(time)); - //gl_FragColor = mix(i1,i2,0.5); - gl_FragColor = i1; + gl_FragColor = mix(i1,i2,0.5); + gl_FragColor = i2; //gl_FragColor = texture2D(image1,st*sin(time*2.)); } @@ -105,7 +105,12 @@ void createShader(char *vert, char *frag) { }; -void setTextureParams() { +void readImage(char *file, char *name, int32_t t, int i) { + + GLuint tex; + glGenTextures(1, &tex); + glActiveTexture(GL_TEXTURE0+i); + glBindTexture(GL_TEXTURE_2D,tex); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); @@ -113,19 +118,13 @@ void setTextureParams() { glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); glEnable(GL_TEXTURE_2D); - stbi_set_flip_vertically_on_load(1); -} -void readImage(char *file, char *name, int32_t t, int i) { - GLuint tex; - glGenTextures(1, &tex); - glActiveTexture(GL_TEXTURE0+i); - glBindTexture(GL_TEXTURE_2D,tex); - setTextureParams(); GLint v = glGetUniformLocation(shader, name); printf("loc %.i\n",v); glUniform1i(v, i); + int comp; + stbi_set_flip_vertically_on_load(1); unsigned char* pixels = stbi_load(file, &width, &height, &comp, STBI_rgb_alpha); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels); stbi_image_free(pixels); @@ -176,49 +175,10 @@ int main(int argc, char **argv) { createWindow(); createShader("shader.vert","shader.frag"); glUseProgram(shader); - /* - */ readImage(argv[1],"img0",GL_TEXTURE0,0); readImage(argv[2],"img1",GL_TEXTURE1,1); readImage(argv[3],"img2",GL_TEXTURE2,2); readImage(argv[4],"img3",GL_TEXTURE3,3); -/* - glEnable(GL_TEXTURE_2D); - //glBindTexture(GL_TEXTURE_2D,0); - GLuint tex0; - glGenTextures(1, &tex0); - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D,tex0); - setTextureParams(); - - GLint v = glGetUniformLocation(shader, "img0"); - printf("loc %.i\n",v); - glUniform1i(v, tex0); - int comp; - unsigned char* pixels = stbi_load(argv[1], &width, &height, &comp, STBI_rgb_alpha); - //printf("%i\n",textures[0]); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels); - stbi_image_free(pixels); - //glBindTexture(GL_TEXTURE_2D,0); - - - glBindTexture(GL_TEXTURE_2D,0); - glActiveTexture(GL_TEXTURE0); - GLuint tex1; - glGenTextures(1, &tex1); - v = glGetUniformLocation(shader, "img1"); - printf("loc %.i\n",v); - glUniform1i(v, tex1); - //glActiveTexture(GL_TEXTURE1); - glBindTexture(GL_TEXTURE_2D,tex1); - //glBindTexture(GL_TEXTURE_2D,textures[1]); - //glBindTexture(GL_TEXTURE_2D,1); - pixels = stbi_load(argv[2], &width, &height, &comp, STBI_rgb_alpha); - printf("%i\n",tex1); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels); - stbi_image_free(pixels); - //glBindTexture(GL_TEXTURE_2D,0); -*/ uniform2f("resolution", width,height); pthread_t tid; @@ -235,14 +195,6 @@ int main(int argc, char **argv) { HASH_DEL(parameters, p); free(p); } - /* - struct texture *t, *tmp2; - HASH_ITER(hh, textures, t, tmp2) { - int v = glGetUniformLocation(shader, t->name); - printf("loc %.i\n",v); - glUniform1i(v, t->id); - } - */ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); glfwSwapBuffers(window); |