#include #include #include #include #define WINDSIZEX 100 #define WINDSIZEY 100 void init(void) { int i, j; GLint texID; GLfloat texImage[2][2][4]; for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) { if (i == 0) { texImage[i][j][0] = 1.0; texImage[i][j][1] = 0.0; texImage[i][j][2] = 0.0; texImage[i][j][3] = 0.0; } else { texImage[i][j][0] = 0.0; texImage[i][j][1] = 0.0; texImage[i][j][2] = 1.0; texImage[i][j][3] = 0.0; } } } glEnable(GL_TEXTURE_2D); glGenTextures(1, &texID); glBindTexture(GL_TEXTURE_2D, texID); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_FLOAT, texImage); 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); glPointSize(TEX_WIDTH); glPolygonMode (GL_FRONT_AND_BACK, GL_POINT); glBegin(GL_TRIANGLES); glVertex2f(TEX_WIDTH/2+1, TEX_WIDTH/2+1); glVertex2f(20, 8); glVertex2f(40, 80); glEnd(); glReadPixels(0, 0, TEX_WIDTH+2, TEX_WIDTH+2, GL_RGB, GL_FLOAT, buf); for (i=0; i