diff options
Diffstat (limited to 'progs/trivial/sub-tex.c')
-rw-r--r-- | progs/trivial/sub-tex.c | 137 |
1 files changed, 0 insertions, 137 deletions
diff --git a/progs/trivial/sub-tex.c b/progs/trivial/sub-tex.c deleted file mode 100644 index 0b8bb28182..0000000000 --- a/progs/trivial/sub-tex.c +++ /dev/null @@ -1,137 +0,0 @@ -/** - * Draw a series of textured quads after each quad, use glTexSubImage() - * to change one row of the texture image. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <GL/glew.h> -#include <GL/glut.h> - - -static GLint Win = 0; -static GLuint Tex = 0; - - -static void Init(void) -{ - fprintf(stderr, "GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); - fflush(stderr); - - glGenTextures(1, &Tex); - glBindTexture(GL_TEXTURE_2D, Tex); - - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); -} - - -static void Reshape(int width, int height) -{ - float ar = (float) width / height; - glViewport(0, 0, width, height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-ar, ar, -1.0, 1.0, -1.0, 1.0); - glMatrixMode(GL_MODELVIEW); -} - - -static void Key(unsigned char key, int x, int y) -{ - if (key == 27) { - glDeleteTextures(1, &Tex); - glutDestroyWindow(Win); - exit(1); - } - glutPostRedisplay(); -} - - -static void Draw(void) -{ - GLubyte tex[16][16][4]; - GLubyte row[16][4]; - int i, j; - - for (i = 0; i < 16; i++) { - for (j = 0; j < 16; j++) { - if ((i + j) & 1) { - tex[i][j][0] = 128; - tex[i][j][1] = 128; - tex[i][j][2] = 128; - tex[i][j][3] = 255; - } - else { - tex[i][j][0] = 255; - tex[i][j][1] = 255; - tex[i][j][2] = 255; - tex[i][j][3] = 255; - } - } - } - - for (i = 0; i < 16; i++) { - row[i][0] = 255; - row[i][1] = 0; - row[i][2] = 0; - row[i][3] = 255; - } - - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, - GL_RGBA, GL_UNSIGNED_BYTE, tex); - glEnable(GL_TEXTURE_2D); - - glClear(GL_COLOR_BUFFER_BIT); - - for (i = 0; i < 9; i++) { - - glPushMatrix(); - glTranslatef(-4.0 + i, 0, 0); - glScalef(0.5, 0.5, 1.0); - - glBegin(GL_QUADS); - glTexCoord2f(1,0); - glVertex3f( 0.9, -0.9, 0.0); - glTexCoord2f(1,1); - glVertex3f( 0.9, 0.9, 0.0); - glTexCoord2f(0,1); - glVertex3f(-0.9, 0.9, 0.0); - glTexCoord2f(0,0); - glVertex3f(-0.9, -0.9, 0.0); - glEnd(); - - glPopMatrix(); - - /* replace a row of the texture image with red texels */ - if (i * 2 < 16) - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, i*2, 16, 1, - GL_RGBA, GL_UNSIGNED_BYTE, row); - } - - - glutSwapBuffers(); -} - - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - glutInitWindowSize(900, 200); - glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); - Win = glutCreateWindow(*argv); - if (!Win) { - exit(1); - } - glewInit(); - Init(); - glutReshapeFunc(Reshape); - glutKeyboardFunc(Key); - glutDisplayFunc(Draw); - glutMainLoop(); - return 0; -} |