#include <windows.h>
#include <GL/gl.h>
#include <GL/glut.h>
#define TEXSIZE 64
GLubyte pixels[TEXSIZE][TEXSIZE][3];
GLuint texName;
void disp( void ) {
glClear(GL_COLOR_BUFFER_BIT);
glBindTexture(GL_TEXTURE_2D , texName);
glBegin(GL_POLYGON);
glTexCoord2f(0 , 0); glVertex2f(-0.9 , -0.9);
glTexCoord2f(0 , 2); glVertex2f(-0.9 , 0.9);
glTexCoord2f(2 , 2); glVertex2f(0.9 , 0.9);
glTexCoord2f(2 , 0); glVertex2f(0.9 , -0.9);
glEnd();
glFlush();
}
int main(int argc , char ** argv) {
unsigned int i , j;
for (i = 0 ; i < TEXSIZE ; i++) {
int r = (i * 0xFF) / TEXSIZE;
for (j = 0 ; j < TEXSIZE ; j++) {
pixels[i][j][0] = (GLubyte)r;
pixels[i][j][1] = (GLubyte)(( j * 0xFF ) / TEXSIZE);
pixels[i][j][2] = (GLubyte)~r;
}
}
glutInit(&argc , argv);
glutInitWindowSize(400 , 300);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH);
glutCreateWindow("Kitty on your lap");
glutDisplayFunc(disp);
glEnable(GL_TEXTURE_2D);
glGenTextures(1 , &texName);
glBindTexture(GL_TEXTURE_2D , texName);
glTexImage2D(
GL_TEXTURE_2D , 0 , 3 , TEXSIZE , TEXSIZE ,
0 , GL_RGB , GL_UNSIGNED_BYTE , pixels
);
glutMainLoop();
glDeleteTextures(1 , &texName);
return 0;
}

void glTexParameterf( GLenum target, GLenum pname, GLfloat param ); void glTexParameteri( GLenum target, GLenum pname, GLint param ); void glTexParameterfv( GLenum target, GLenum pname, const GLfloat *params ); void glTexParameteriv( GLenum target, GLenum pname, const GLint *params );target には GL_TEXTURE_1D または GL_TEXTURE_2D を指定します
| 定数 | 解説 |
|---|---|
| GL_TEXTURE_MIN_FILTER | テクスチャ縮小関数を設定します |
| GL_TEXTURE_MAG_FILTER | テクスチャ拡張関数を設定します |
| GL_TEXTURE_WRAP_S | テクスチャ座標 s のラップ・パラメタを設定します GL_CLAMP または GL_REPEAT を設定することができます |
| GL_TEXTURE_WRAP_T | テクスチャ座標 t のラップ・パラメタを設定します GL_CLAMP または GL_REPEAT を設定することができます |
| GL_TEXTURE_BORDER_COLOR | RGBA 形式で境界の色を設定します カラー要素は 1 が最も高く、-1 が最も低いことを表します |
| GL_TEXTURE_PRIORITY | 0 〜 1 の範囲でテクスチャの優先度を設定します |
#include <windows.h>
#include <GL/gl.h>
#include <GL/glut.h>
#define TEXSIZE 64
GLubyte pixels[TEXSIZE][TEXSIZE][3];
GLuint texName;
void disp( void ) {
glClear(GL_COLOR_BUFFER_BIT);
glBindTexture(GL_TEXTURE_2D , texName);
glBegin(GL_POLYGON);
glTexCoord2f(0 , 0); glVertex2f(-0.9 , -0.9);
glTexCoord2f(0 , 2); glVertex2f(-0.9 , 0.9);
glTexCoord2f(2 , 2); glVertex2f(0.9 , 0.9);
glTexCoord2f(2 , 0); glVertex2f(0.9 , -0.9);
glEnd();
glFlush();
}
int main(int argc , char ** argv) {
unsigned int i , j;
for (i = 0 ; i < TEXSIZE ; i++) {
int r = (i * 0xFF) / TEXSIZE;
for (j = 0 ; j < TEXSIZE ; j++) {
pixels[i][j][0] = (GLubyte)r;
pixels[i][j][1] = (GLubyte)(( j * 0xFF ) / TEXSIZE);
pixels[i][j][2] = (GLubyte)~r;
}
}
glutInit(&argc , argv);
glutInitWindowSize(400 , 300);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH);
glutCreateWindow("Kitty on your lap");
glutDisplayFunc(disp);
glEnable(GL_TEXTURE_2D);
glGenTextures(1 , &texName);
glBindTexture(GL_TEXTURE_2D , texName);
glTexParameteri(GL_TEXTURE_2D , GL_TEXTURE_WRAP_S , GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D , GL_TEXTURE_WRAP_T , GL_CLAMP);
glTexImage2D(
GL_TEXTURE_2D , 0 , 3 , TEXSIZE , TEXSIZE ,
0 , GL_RGB , GL_UNSIGNED_BYTE , pixels
);
glutMainLoop();
glDeleteTextures(1 , &texName);
return 0;
}
