#include #include #include #include #define WINDSIZEX 100 #define WINDSIZEY 100 GLint texID; void init(void) { int i, j; GLfloat texImage0[4][4][4]; GLfloat texImage1[2][2][4]; GLfloat texImage2[1][1][4]; for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { texImage0[i][j][0] = 1.0; texImage0[i][j][1] = 0.0; texImage0[i][j][2] = 0.0; texImage0[i][j][3] = 0.0; } } for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) { texImage1[i][j][0] = 0.0; texImage1[i][j][1] = 1.0; texImage1[i][j][2] = 0.0; texImage1[i][j][3] = 0.0; } } texImage2[1][1][0] = 0.0; texImage2[1][1][1] = 0.0; texImage2[1][1][2] = 1.0; texImage2[1][1][3] = 0.0; glGenTextures(1, &texID); glBindTexture(GL_TEXTURE_2D, texID); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, //GL_NEAREST); GL_NEAREST_MIPMAP_NEAREST); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_FLOAT, texImage0); glTexImage2D(GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 0, GL_RGBA, GL_FLOAT, texImage1); glTexImage2D(GL_TEXTURE_2D, 2, GL_RGBA, 1, 1, 0, GL_RGBA, GL_FLOAT, texImage2); glEnable(GL_TEXTURE_2D); /*glTexEnvf(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_TRUE); glEnable(GL_POINT_SPRITE); GLfloat maxSize; glGetFloatv(GL_POINT_SIZE_MAX, &maxSize); printf ("max point size: %f\n", maxSize); */ } #define TEX_WIDTH 2 static void test(void) { GLfloat buf[(TEX_WIDTH+2)*(TEX_WIDTH+2)*3]; int i, j; glClear(GL_COLOR_BUFFER_BIT); glBindTexture(GL_TEXTURE_2D, texID); /* glPointSize(TEX_WIDTH); glBegin(GL_POINTS); glVertex2f(TEX_WIDTH/2+1, TEX_WIDTH/2+1); glEnd(); */ int size = 2; glBegin(GL_QUADS); glTexCoord2f(0.0, 0.0); glVertex2f(12.0, 12.0); glTexCoord2f(0.0, 1.0); glVertex2f(12.0, 12.0+size); glTexCoord2f(1.0, 1.0); glVertex2f(12.0+size, 12.0+size); glTexCoord2f(1.0, 0.0); glVertex2f(12.0+size, 12.0); glEnd(); glFlush(); glReadPixels(11, 11, 4, 4, GL_RGB, GL_FLOAT, buf); //glReadPixels(11, 11, TEX_WIDTH+2, TEX_WIDTH+2, GL_RGB, GL_FLOAT, buf); for (i=0; i