Title: ??? ??? RGBA ????? ??
1 ? ? ? ? ?
2??? ??
- ????? ??
- ???? ???
- ???
- ??? ????
- ??? ???
- ??? ??? ??
- ??? ?? ???? ????
- ??? ??
3??? ??? ??
- ??? ????? ???, ????? ?? ???? ??
- ???? ??? ??? ??? ???? ??? ??
- ??? ??? ???
- ???? ???? ??? ??? ??? ???.
- ??? ??? RGBA ????? ??
4??
- ??? ???(??, ??, ??? ?? ???)?? ??? ??
- ??(texel) ??? ?? ??? ?? ????? ?
- ?????(tessellation) ???? ? ???? ???? ???? ????
??? ??? ??? ??? ????? ?? - ?? ???? ?????? ??? ????? ?? ????? ???? ???? ????
?? ??? ???? ???? ??? ???? ???? ??? ?? ??
5??? ??? ??
- (1) ??? ????? ???, ????? ?? ??? ????
- ???? ???? ?? 2???? ?? ??? 1??? ? ? ??, 3??? ? ?
??. - ???? ???? ???? ? ?, ? ?, ? ?, ?? ? ?? ? ??? ??
???? ?? - R, G, B, A ? 4? ???? ??? ?? ??
- ?? 9-1
- ??? ??? ????? ??? ???? ???? ?? ??
6- (2) ???? ? ??? ???? ?? ????
- ????? ??? ??? ?????? ??? RGBA?? ??? ? 4?? ?? ??
- ??? ??? ??? ?? ??? ???? ??(????)?
- ???? ????? ??? ??? ???? ???? ??? ??.
- ???? ????? ??? ? ??
7- (3) ??? ??? ???
- ??? ??? ?? ???? ???? ??
- GL_TEXTURE_1D,GL_TEXTURE_2D,GL_TEXTURE_3D ???
???? ??? ??? ???? ? ? ?? - (4) ???? ???? ??? ??? ?? ???
- ???? ??? ????? ?????? ?????? ??
- ? ??? ????? ????? ??? ??? ???? ??? ???? ?
8?? 9-1 ??? ?? ??? ??? checker.c
- include ltGL/glut.hgt
- include ltstdlib.hgt
- include ltstdio.hgt
- / Create checkerboard texture /
- define checkImageWidth 64
- define checkImageHeight 64
- static GLubyte checkImagecheckImageHeightcheckI
mageWidth4 - ifdef GL_VERSION_1_1
- static GLuint texName
- endif
9- void makeCheckImage(void)
-
- int i, j, c
-
- for (i 0 i lt checkImageHeight i)
- for (j 0 j lt checkImageWidth j)
- c ((((i0x8)0)((j0x8))0))255
- checkImageij0 (GLubyte) c
- checkImageij1 (GLubyte) c
- checkImageij2 (GLubyte) c
- checkImageij3 (GLubyte) 255
-
-
-
10- void init(void)
-
- glClearColor (0.0, 0.0, 0.0, 0.0)
- glShadeModel(GL_FLAT)
- glEnable(GL_DEPTH_TEST)
- makeCheckImage()
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1)
- ifdef GL_VERSION_1_1
- glGenTextures(1, texName)
- glBindTexture(GL_TEXTURE_2D, texName)
- endif
11- glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_WRAP_S, GL_REPEAT) - glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_WRAP_T, GL_REPEAT) - glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_MAG_FILTER, GL_NEAREST) - glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_MIN_FILTER, GL_NEAREST) - ifdef GL_VERSION_1_1
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
checkImageWidth, checkImageHeight, - 0, GL_RGBA, GL_UNSIGNED_BYTE,
checkImage) - else
- glTexImage2D(GL_TEXTURE_2D, 0, 4,
checkImageWidth, checkImageHeight, - 0, GL_RGBA, GL_UNSIGNED_BYTE,
checkImage) - endif
12- void display(void)
-
- glClear(GL_COLOR_BUFFER_BIT
GL_DEPTH_BUFFER_BIT) - glEnable(GL_TEXTURE_2D)
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,
GL_DECAL) - ifdef GL_VERSION_1_1
- glBindTexture(GL_TEXTURE_2D, texName)
- endif
- glBegin(GL_QUADS)
- glTexCoord2f(0.0, 0.0) glVertex3f(-2.0, -1.0,
0.0) - glTexCoord2f(0.0, 1.0) glVertex3f(-2.0, 1.0,
0.0) - glTexCoord2f(1.0, 1.0) glVertex3f(0.0, 1.0,
0.0) - glTexCoord2f(1.0, 0.0) glVertex3f(0.0, -1.0,
0.0)
13- glTexCoord2f(0.0, 0.0) glVertex3f(1.0, -1.0,
0.0) - glTexCoord2f(0.0, 1.0) glVertex3f(1.0, 1.0,
0.0) - glTexCoord2f(1.0, 1.0) glVertex3f(2.41421,
1.0, -1.41421) - glTexCoord2f(1.0, 0.0) glVertex3f(2.41421,
-1.0, -1.41421) - glEnd()
- glFlush()
- glDisable(GL_TEXTURE_2D)
-
- void reshape(int w, int h)
-
- glViewport(0, 0, (GLsizei) w, (GLsizei) h)
- glMatrixMode(GL_PROJECTION)
- glLoadIdentity()
14- gluPerspective(60.0, (GLfloat) w/(GLfloat) h,
1.0, 30.0) - glMatrixMode(GL_MODELVIEW)
- glLoadIdentity()
- glTranslatef(0.0, 0.0, -3.6)
-
- void keyboard (unsigned char key, int x, int y)
-
- switch (key)
- case 27
- exit(0)
- break
- default
- break
-
15- int main(int argc, char argv)
-
- glutInit(argc, argv)
- glutInitDisplayMode(GLUT_SINGLE GLUT_RGB
GLUT_DEPTH) - glutInitWindowSize(250, 250)
- glutInitWindowPosition(100, 100)
- glutCreateWindow(argv0)
- init()
- glutDisplayFunc(display)
- glutReshapeFunc(reshape)
- glutKeyboardFunc(keyboard)
- glutMainLoop()
- return 0
16(No Transcript)
17?? ???? ?? checker.c
- ???? makeCheckImage() ? ????
- init()?? ????? ???
- glGenTextures()? glBindTexture()? ??? ??? ???
???. - glTexImage2D()? ?? ??? ?? ??? ?? ????. ??? ??,
??, ??, ??? ??? ??? ???. - glTexParameter()? ???? ??? ??????, ???? ??
????? ??? ?? ?? ??? ??? ???? ??? - display()?? glEnable()? ?? ???? ??
- glTexEnv()? GL_REPLACE ? ??? ?? ??
- ??? ???? ?? ?? GL_DECAL, GL_REPLACE,
GL_MODULATE, GL_BLEND - glTexCoord()? ???? ??? ??? ??
18???? ???
- glTextImage2D()? 2?? ??? ???? ??
- 1?? glTextImage1D(), 3?? glTextImage3D()
- void glTextImage2D(GLenum target, GLint level,
GLint internalFormat, GLsizei width, GLsizei
height, GLint border, GLenum format, GLenum type,
const GLvoid texels) - target ??? GL_TEXTURE_2D, GL_PROXY_TEXTURE_2D? ??
- (??) ??????? OpenGL ????? ?? ?????? ?? ?? ??? ???
???? ???? ??? ? ??? ?. - level ??? ??? ??. ???? ??? ??(??? ???? ?? ??)
level? 0 - internalFormat ??? ??? ???? R, G, B, A ????? ??
????? ???. 1?? 4? ?. ?? 38?? ????? ??? - GL_ALPHA, GL_ALPHA4, GL_LUMINANCE4, GL_RGB4 ?
- width, height ? ??? ???? ??(?? ??) ??. ?? 64x64.
2m2b (m? ??? ?? ?, b? border ?)??? ??? ?.
19- border? 0(???? ??)?? 1(??? ??)?? ???? ?? ???.
- format, type ??? ??? ???? ??? ??? ??? ???
- format GL_COLOR_INDEX, GL_RGB, GL_GREEN,
GL_BLUE, GL_ALPHA, - type GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT,
- texels ??? ??? ???
20- ???? ???? ?? ???? ??? ??? ?? ?? ???? 2? ????? ?.
? ??? ?? ??? ????gluScaleImage() ???? ???? ???
???? - Int gluScaleImage(GLenum format, GLint widthin,
GLint heightin, GLenum typein, const void
datain, GLint widthout, GLint heightout, GLenum
typeout, void dataout) - datain?? ?? ???? ?? ?? ??? ?? ????? ??, ???? ???
- ?? ???? GL_PACK ????? ???? dataout? ???.
21- glCopyTexImage2D()? ???????? ?? ???? read, ? ????
??? ???? ???? ?? - void glCopyTexImage2D(GLenum target, GLint level,
GLint internalFormat, GLint x, GLint y, GLsizei
width, GLsizei height, GLint border) - ???? ???? ?? ??? ?? ???? ???? 2?? ???? ??.
- target ??? ?? GL_TEXTURE_2D? ????? ?
- ??? ??? ??? ?? (x, y) ??? ?? ?? ????? ???? ????
- width/height ? ??? ???? ??, ? ? 2m2b ? ??
- m? ?? ?? ??, b? border ?
22??? ???
- OpenGL ?? ??? ?? ??? ??? ?? ?? ??? ??? ???? ????
??? ? ??? ??? ??? ???(proxy) ?? - OpenGL? ??? ?? ??? ??? ?? GL_PROXY_TEXTURE_2D ?
target ??? ??? level, internalFormat, width,
height, border, format, type? ??? glTexImage2D()?
?? - ???? ?? ?? ??? ?? ????? NULL?? ??? ?
- ???? ???? ??? ???? ??? ???? ?? ??? ???? ??? ??
glGetTexLevelParameter()? ??, ??? ????? ?? - void glGetTextLevelParameterifv(GLenum target,
GLint level, GLenum pname, TYPE params)
23?? 9-2 ??? ???
- ??? ???? ??? ??? ????
-
- GLInt width
- glTexImage2D(GL_PROXY_TEXTURE_2D, 0, GL_RGBA8,
64, 64, 0,GL_RGBA, GL_UNSIGNED_BYTE, NULL) -
- glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D,
0, GL_TEXTURE_WIDTH, width)
24- ??? ???? ?? ?? ?? ???
- ?? ???? 2?? ??? ???? ???? ?? ??(subregion)? ?? ??
???? ???? 2?? ??? ??? ?? - void glTexSubImage2D(GLenum target, GLint level,
GLint xoffset, GLint yoffset, GLsizei width,
GLsizei height, GLenum format, GLenum type, const
GLvoid texels) - target ??? GL_TEXTURE_2D? ??
- level ?? LOD(level-of-detail)
- width/height ?? ??? ???? ?? ?? ??? ???? ?? ???
?? - xoffset/yoffset x-, y- ??? ?? ???. ?? ???? ????
??
25??9-3 ??? ?? ??? ?? texsub.c
- include ltGL/glut.hgt
- include ltstdlib.hgt
- include ltstdio.hgt
- ifdef GL_VERSION_1_1
- define checkImageWidth 64
- define checkImageHeight 64
- define subImageWidth 16
- define subImageHeight 16
- static GLubyte checkImagecheckImageHeightcheckI
mageWidth4 - static GLubyte subImagesubImageHeightsubImageWi
dth4 - static GLuint texName
26- void makeCheckImages(void)
-
- int i, j, c
-
- for (i 0 i lt checkImageHeight i)
- for (j 0 j lt checkImageWidth j)
- c (((i0x8)0)((j0x8)0))255 //??
- checkImageij0 (GLubyte) c
- checkImageij1 (GLubyte) c
- checkImageij2 (GLubyte) c
- checkImageij3 (GLubyte) 255
-
-
27- for (i 0 i lt subImageHeight i)
- for (j 0 j lt subImageWidth j)
- c (((i0x4)0)((j0x4)0))255 //??
- subImageij0 (GLubyte) c
- subImageij1 (GLubyte) 0
- subImageij2 (GLubyte) 0
- subImageij3 (GLubyte) 255
-
- void init(void)
-
- glClearColor (0.0, 0.0, 0.0, 0.0)
- glShadeModel(GL_FLAT)
- glEnable(GL_DEPTH_TEST)
28- makeCheckImages()
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1)
- glGenTextures(1, texName)
- glBindTexture(GL_TEXTURE_2D, texName)
- glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_WRAP_S, GL_REPEAT) - glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_WRAP_T, GL_REPEAT) - glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_MAG_FILTER, GL_NEAREST) - glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_MIN_FILTER, GL_NEAREST) - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
checkImageWidth, checkImageHeight, 0, GL_RGBA,
GL_UNSIGNED_BYTE, checkImage)
29- void display(void)
-
- glClear(GL_COLOR_BUFFER_BIT
GL_DEPTH_BUFFER_BIT) - glEnable(GL_TEXTURE_2D)
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,
GL_DECAL) - glBindTexture(GL_TEXTURE_2D, texName)
- glBegin(GL_QUADS)
- glTexCoord2f(0.0, 0.0) glVertex3f(-2.0, -1.0,
0.0) - glTexCoord2f(0.0, 1.0) glVertex3f(-2.0, 1.0,
0.0) - glTexCoord2f(1.0, 1.0) glVertex3f(0.0, 1.0,
0.0) - glTexCoord2f(1.0, 0.0) glVertex3f(0.0, -1.0,
0.0)
30- glTexCoord2f(0.0, 0.0) glVertex3f(1.0, -1.0,
0.0) - glTexCoord2f(0.0, 1.0) glVertex3f(1.0, 1.0,
0.0) - glTexCoord2f(1.0, 1.0) glVertex3f(2.41421,
1.0, -1.41421) - glTexCoord2f(1.0, 0.0) glVertex3f(2.41421,
-1.0, -1.41421) - glEnd()
- glFlush()
- glDisable(GL_TEXTURE_2D)
-
- void reshape(int w, int h)
-
- glViewport(0, 0, (GLsizei) w, (GLsizei) h)
- glMatrixMode(GL_PROJECTION)
- glLoadIdentity()
31- gluPerspective(60.0, (GLfloat) w/(GLfloat) h,
1.0, 30.0) - glMatrixMode(GL_MODELVIEW)
- glLoadIdentity()
- glTranslatef(0.0, 0.0, -3.6)
- void keyboard (unsigned char key, int x, int y)
- switch (key)
- case 's'
- case 'S'
- glBindTexture(GL_TEXTURE_2D, texName)
- glTexSubImage2D(GL_TEXTURE_2D, 0, 12,
44, subImageWidth, - subImageHeight, GL_RGBA,
- GL_UNSIGNED_BYTE,
subImage) - glutPostRedisplay()
- break
32- case 'r'
- case 'R'
- glBindTexture(GL_TEXTURE_2D, texName)
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
checkImageWidth, - checkImageHeight, 0,
GL_RGBA, - GL_UNSIGNED_BYTE,
checkImage) - glutPostRedisplay()
- break
- case 27
- exit(0)
- break
- default
- break
-
33- int main(int argc, char argv)
-
- glutInit(argc, argv)
- glutInitDisplayMode(GLUT_SINGLE GLUT_RGB
GLUT_DEPTH) - glutInitWindowSize(250, 250)
- glutInitWindowPosition(100, 100)
- glutCreateWindow(argv0)
- init()
- glutDisplayFunc(display)
- glutReshapeFunc(reshape)
- glutKeyboardFunc(keyboard)
- glutMainLoop()
- return 0
34- else
- int main(int argc, char argv)
-
- fprintf (stderr, "This program demonstrates a
feature which is not in OpenGL Version 1.0.\n") - fprintf (stderr, "If your implementation of
OpenGL Version 1.0 has the right extensions,\n") - fprintf (stderr, "you may be able to modify
this program to make it run.\n") - return 0
-
- endif
35????
36- glCopyTexSubImage2D()? ?????? ?? ??? ???? ??,
???? ??? ??? ??? ?? - void glCopyTexSubImage2D(GLenum target, GLint
level, GLint xoffset, GLint yoffset, GLint x,
GLint y,GLsizei width, GLsizei height) - ???? 2?? ??? ???? ???? ?? ??? ?? ?? ??? ???? ??
??? ??? ??? ?? ?? - target ??? GL_TEXTURE_2D? ??
- level? ????? ?? ??, xoffset,yoffset? x,y??? ??
offset? ??
371?? ???
- ??? 1?? ???? ??? ?? glTexImage1D() ??
- ? ???? ???? ??? ? ??? ?? ? ??? 1?? ???? ?? ??
???? ?? 1?? ??? ?? -
- void glTexImage1D(GLenum target, GLint level,
GLint internalFormat, GLsizei width, GLint
border, GLenum format, GLenum type, const GLvoid
texels) - texels? 1?? ??, width ?? 2m (?? ??? ??? 2m 2)
38- 1?? ???? ?? ?? ?? ??? ???? ??? glTexSubImage1D()?
?? - void glTexSubImage1D(GLenum target, GLint level,
GLint xoffset, GLsizei width, GLenum format,
GLenum type,const GLvoid texels) - ???? 1?? ??? ???? ???? ?? ??? ?? ?? ??? ???? 1??
??? ??? ?? - level, format, type ??? glTexImage1D()?? ???? ??
??
39- ?????? ??? 1?? ???? ??? ??? 1?? ??? ????? ????
??? glCopyTexImage1D()? glCopyTexSubImage1()? ?? - void glCopyTexImage1D(GLenum target, GLint level,
GLint internalFormat, GLint x, GLint y, GLsizei
width,GLint border) - ??? ???? ??? ????? ??? ??, 1?? ???? ???.
- target? GL_TEXTURE_1D??? ????? ?
- width ? ?? ?? ??? ? ??. ?? 2m(??? ?? ??? 2m2)
40- void glCopyTexSubImage1D(GLenum target, GLint
level, GLint xoffset, GLint x, GLint y, GLsizei
width) - ???? 1?? ??? ???? ???? ???? ?? ?? ??? ???? ??
?????? ??? ??? ?? - target ??? GL_TEXTURE_1D? ??
- level ?? ??? ?? ??
- xoffset ?? offset ??
413?? ??? ? ?? ??
- 3?? ???? ??, ????? ??????? ??? ?? ???
- ??? ???? ????(CT), ???? ???(MRI)???? ????? ??
- ?? ??? ? ???
- 3?? ??? ???? 2?? ?? ??? ??? ??? ??
- ????? ???? ??? ??
- 3?? ???? ??? ?? glTexImage3D()??
42- void glTexImage3D(GLenum target, GLint level,
GLint internalFormat, GLsizei width, GLsizei
height, GLsizei depth, GLint border, GLenum
format, GLenum type, const GLvoid texels) - 3?? ??? ??
- ?? ??? glTexImage2D() ? ?? ??? ???? ??? 3?? ????
depth ??? ??. Depth ?? 2m(???? ?? ??? 2m1) - ???? ??? ???? ??? ? ???, ??? ??? ??? ??
43- 3?? ???? ?? ?? ??? ????? glTexSubImage3D()? ??
- void glTexSubImage3D(GLenum target, GLint level,
GLint xoffset, GLint yoffset, GLint zoffset,
GLsizei width, GLsizei height, GLsizei depth,
GLenum format, GLenum type, const GLvoid
texels) - ???? 3?? ??? ???? ???? 3?? ??? ??? ??
- target ??? GL_TEXTURE_3D? ?? ?
- level, format, type glTexImage3D() ?? ??? ??
??.
44- 3?? ???? ??? ???? ???? ?????? ???? ??
glCopyTexSubImage3D()? ?? - void glCopyTexSubImage3D(GLenum target, GLint
level, GLint xoffset, GLint yoffset, GLint
zoffset, GLsizei width, GLsizei height) - ???? 3?? ??? ???? ???? ?? ??? ???? ??, ??? ???
??? ??? ?? - target ??? GL_TEXTURE_3D ??
453?? ???? ?? ?? ??
- ?? ???? ? ?? ?? ??? ??
- glPixelStore()? ???? ?? ??? ?? ???? ?? ???? ???
???? ????? ???? ?? ????? ??? - ROW_LENGTH, ALIGNMENT, SKIP_PIXELS,
SKIP_ROWS(? GL_UNPACK_ ?? GL_PACK_ ??) - 3?? ??? ??? ??? ?? ??? ???? ??? ??? ?? ?? ??? ??
- IMAGE_HEIGHT,SKIP_IMAGES ?
- ??? ???? ?? ??? ??? ??? ???? ?? glTexImage3D(),
glSubImage3D(), glGetTexImage() ??? ??
46- ?? ???? ?? 3?? ???? ??? ?? ???? ??? ????
IMAGE_HEIGHT??? ???? ??? ?? ??? ??? ?? - ?? ??? ??? ??? ???? ???? SKIP_IMAGES ????? ??
47IMAGE_HEIGHT ?? ?? ??
Subimage In layer 1
ROW_LENGTH
IMAGE_ HEIGHT
Subimage In layer 0
Height
SKIP_PIXELS
layer1
SKIP_ROWS
layer0
48?? ??? ?? ??
- ??? ????? ???? ??? ???? ?? ??? ??? ??? ????? ???
????? ??. ??? ?? ?????? ??? ??? ??? ????? ?. gt
?? ??(?? ??? ??? ?? ?? ??) - ???? ??? ? OpenGL? ????? ??? ????? ??? ??? ????
??? ?? - ???? ???? ???? ?? ??? ?? ? ??? 1 1 ??? ??? 2?
????? ??? ? ?? ???? ??? ??? ? - ???? ?? ??? ?? 64x16 ???, ???? 32x8, 16x4, 8x2,
4x1, 2x1, 1x1 ??? ?? ????? ? - ? ????? ???? ?? ??? ?? ??? ???? ? level, width,
height,image ?????? ?? ?? ??? ?? glTexImage2D()?
?? ??
49??9-5 ?? ??? mipmap.c
- include ltGL/glut.hgt
- include ltstdlib.hgt
- GLubyte mipmapImage3232324
- GLubyte mipmapImage1616164
- GLubyte mipmapImage8884
- GLubyte mipmapImage4444
- GLubyte mipmapImage2224
- GLubyte mipmapImage1114
- ifdef GL_VERSION_1_1
- static GLuint texName
- endif
50- void makeImages(void)
-
- int i, j
-
- for (i 0 i lt 32 i)
- for (j 0 j lt 32 j)
- mipmapImage32ij0 255
- mipmapImage32ij1 255
- mipmapImage32ij2 0
- mipmapImage32ij3 255
-
-
51- for (i 0 i lt 16 i)
- for (j 0 j lt 16 j)
- mipmapImage16ij0 255
- mipmapImage16ij1 0
- mipmapImage16ij2 255
- mipmapImage16ij3 255
-
- for (i 0 i lt 8 i)
- for (j 0 j lt 8 j)
- mipmapImage8ij0 255
- mipmapImage8ij1 0
- mipmapImage8ij2 0
- mipmapImage8ij3 255
-
-
52- for (i 0 i lt 4 i)
- for (j 0 j lt 4 j)
- mipmapImage4ij0 0
- mipmapImage4ij1 255
- mipmapImage4ij2 0
- mipmapImage4ij3 255
-
- for (i 0 i lt 2 i)
- for (j 0 j lt 2 j)
- mipmapImage2ij0 0
- mipmapImage2ij1 0
- mipmapImage2ij2 255
- mipmapImage2ij3 255
-
-
53- mipmapImage1000 255
- mipmapImage1001 255
- mipmapImage1002 255
- mipmapImage1003 255
-
- void init(void)
-
- glEnable(GL_DEPTH_TEST)
- glShadeModel(GL_FLAT)
- glTranslatef(0.0, 0.0, -3.6)
- makeImages()
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1)
54- ifdef GL_VERSION_1_1
- glGenTextures(1, texName)
- glBindTexture(GL_TEXTURE_2D, texName)
- endif
- glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_WRAP_S, GL_REPEAT) - glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_WRAP_T, GL_REPEAT) - glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_MAG_FILTER, GL_NEAREST) - glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_MIN_FILTER, - GL_NEAREST_MIPMAP_NEAREST)
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 32,
32, 0, - GL_RGBA, GL_UNSIGNED_BYTE,
mipmapImage32)
55- glTexImage2D(GL_TEXTURE_2D, 1, GL_RGBA, 16,
16, 0, - GL_RGBA, GL_UNSIGNED_BYTE,
mipmapImage16) - glTexImage2D(GL_TEXTURE_2D, 2, GL_RGBA, 8, 8,
0, - GL_RGBA, GL_UNSIGNED_BYTE,
mipmapImage8) - glTexImage2D(GL_TEXTURE_2D, 3, GL_RGBA, 4, 4,
0, - GL_RGBA, GL_UNSIGNED_BYTE,
mipmapImage4) - glTexImage2D(GL_TEXTURE_2D, 4, GL_RGBA, 2, 2,
0, - GL_RGBA, GL_UNSIGNED_BYTE,
mipmapImage2) - glTexImage2D(GL_TEXTURE_2D, 5, GL_RGBA, 1, 1,
0, - GL_RGBA, GL_UNSIGNED_BYTE,
mipmapImage1) - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,
GL_DECAL) - glEnable(GL_TEXTURE_2D)
56- void display(void)
-
- glClear(GL_COLOR_BUFFER_BIT
GL_DEPTH_BUFFER_BIT) - ifdef GL_VERSION_1_1
- glBindTexture(GL_TEXTURE_2D, texName)
- endif
- glBegin(GL_QUADS)
- glTexCoord2f(0.0, 0.0) glVertex3f(-2.0, -1.0,
0.0) - glTexCoord2f(0.0, 8.0) glVertex3f(-2.0, 1.0,
0.0) - glTexCoord2f(8.0, 8.0) glVertex3f(2000.0,
1.0, -6000.0) - glTexCoord2f(8.0, 0.0) glVertex3f(2000.0,
-1.0, -6000.0) - glEnd()
- glFlush()
57- void reshape(int w, int h)
- glViewport(0, 0, (GLsizei) w, (GLsizei) h)
- glMatrixMode(GL_PROJECTION)
- glLoadIdentity()
- gluPerspective(60.0, (GLfloat)w/(GLfloat)h,
1.0, 30000.0) - glMatrixMode(GL_MODELVIEW)
- glLoadIdentity()
- void keyboard (unsigned char key, int x, int y)
- switch (key)
- case 27
- exit(0)
- break
- default
- break
58- int main(int argc, char argv)
-
- glutInit(argc, argv)
- glutInitDisplayMode (GLUT_SINGLE GLUT_RGB
GLUT_DEPTH) - glutInitWindowSize (500, 500)
- glutInitWindowPosition (50, 50)
- glutCreateWindow (argv0)
- init ()
- glutDisplayFunc(display)
- glutReshapeFunc(reshape)
- glutKeyboardFunc(keyboard)
- glutMainLoop()
- return 0
59?? ??
60???? ?? ??
- ?? ?? 0?? ? ?? ?? ???? ?? ????? ?????
gluBuildD1Mipmaps(), gluBuild2DMipmaps(),
gluBuild3DMipmaps() ??? 1 1 ???? ???? ???? ???
??? ??? ?? - int gluBuild1DMipmaps(GLenum target, GLint
internalFormat, GLint width, GLenum format,GLenum
type, void texels) - int gluBuild2DMipmaps(GLenum target, GLint
internalFormat, GLint width, GLenum height,
GLenum format, GLenum type, void texels) - int gluBuild3DMipmpas(GLenum target, GLint
internalFormat, GLint width, GLenum height,
GLenum depth, GLenum format, GLenum type, void
texels) - ??? ??? ??? ???? ?? ??? glTexImageD()? ????.
- ?? ???? ????? ????? 0?? ???? ??? GLU ???? ??
61??? ??? ?? ??
- ??? ??? ??? ???? ??? ??? ?? ??? ?? ??? ??? ??? ??
- ? log2 ?, ? ??? ??
- ? lt 0.0
- ???? ??? ???? ??, ???? ??
- ? gt 0.0
- ???? ??? ???? ??, ???? ??
- ?? ??, ??? ???? 64x64 ????, ??? ??? 32x32????
- ? 2.0, ? 1.0
- ??? ???? 64x32??, ??? ??? 8x16????
- ? 8.0, ? 3.0
62- OpenGL? ??? ???? ???? ??? ???? ??
- GL_TEXTURE_BASE_LEVEL, GL_TEXTURE_MAX_LEVEL,
GL_TEXTURE_MIN_LOD, GL_TEXTURE_MAX_LOD - BASE_LEVEL
- ???? ?? ??? ?? ??? ??
- ???? 0
- MAX_LEVEL
- ??? ?? ??? ??
- ???? 1000
- ??? ?? BASE_LEVEL? ?? ?? ??? ??? ? ??? ?? ????
???? ? - ?? ?? ??? MAX_LEVEL ?? ??? ?? ????, ??? ???
1??(1, 1x1, 1x1x1)? ?? ??
63???? ?? ?
GL_TEXTURE_BASE_LEVEL ??? ?? ?? ???? ??? ???? ??(?? ?? ??? ?? ??) ?? ??? ?
GL_TEXTURE_MAX_LEVEL ??? ?? ?? ???? ??? ???? ??(?? ?? ??? ?? ??) ?? ??? ?
64??? ??? ?? ??
- MIN_LOD? MAX_LOD? ?? ??? ?(? ,??? ???? ?????? ???
??)? ??, ???? ?? - BASE_LEVEL? MAX_LEVEL? ???? glTexParameter()?
MIN_LOD? MAX_LOD? ?? - glTexParameterf(GL_TEXTURE_2D,
GL_TEXTURE_MIN_LOD, 2.5) - glTexParameterf(GL_TEXTURE_2D,
GL_TEXTURE_MAX_LOD, 4.5)
65???? ?? ?? ?? ??
- ?? ??? ??? ??? ?? gluBuildDMipmaps()???? ??? ??
??? ?? ??? ??. - ?? ???? ????? ??? ??? ??? gluBuildDMipmapLevels()
? ?? - int gluBuild1DMipmapLevels(GLenum target, GLint
internalFormat, GLint width, GLenum format,
GLenum type, GLint level,GLint base, GLint max,
void texels) - int gluBuild2DMipmapLevels(GLenum target, GLint
internalFormat, GLint width, Glint height, GLenum
format, GLenum type, GLint level,GLint base,
GLint max, void texels) - int gluBuild3DMipmapLevels(GLenum target, GLint
internalFormat, GLint width, Glint height, GLint
depth,GLenum format, GLenum type, GLint
level,GLint base, GLint max, void texels)
66? ? ?
- ??? ?? ???? ?? ?????? ??? ????? ???? ??, ?? ???
?? ???? ??? ??? ????? ?? - ??? ???? ????? ?? ??, ?????? ?? ??? ?? ??
- glTexParameter()? ??, ?? ??? ??? ????.
- glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_MAG_FILTER, GL_NEAREST) - glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_MIN_FILTER, GL_NEAREST)
67??? ??? ?? ??? ??
- GL_NEAREST(????) ??? ??? ??? ??? ??? ??? ??? ???
?? ?? - GL_LINEAR(???) ??? ??? ??? ??? ??? 2x2??? ??? ??
?? ?? - GL_NEAREST_MIPMAP_NEAREST ??? ????? ?? ??? ????
?? - GL_NEAREST_MIPMAP_LINEAR ??? ?? ??? ????? ??
???? ?
GL_TEXTURE_MAG_FLITER GL_NEAREST ?? GL_LINEAR
GL_TEXTURE_MIN_FILTER GL_NEAREST, GL_LINEAR, GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST_MIPMAP_LINEAR, GL_LINEAR_MIPMAP_NEAREST, GL_LINEAR_MIPMAP_LINEAR
68- GL_LINEAR_MIPMAP_NEAREST ? ?? ? ??? ?? ??? ???
???? ? ? ?? ?? ????? ?? - GL_LINEAR_MIPMAP_LINEAR ? ?? ?? ?? ??? ???? ??
?? ???? ????, ? ?? ?? ????? ??
69OpenGL ???? - ???
70??? ????
- ??? ???? ????, ?? ??? ??? ??
- ??? ???? ??? ???? ???? ?? ?? ??
- ??? ???? ???? glTexImage() ?? ??
- ??? ???? ?? ??? ???? ?? ??
- ??? ??? ???.
- ??? ??? ??? ??? ???? ??? ???? ??? ????? ???
- ?? ???? ?? ??? ?? ?? ???? ??? ?? ??? ????? ???
???? ????? ??? ??? ???? ?? - ??? ????? ??? ???? ???? ???? ??? ?? ??? ? ??? ??.
71??? ????? ??
- void glGenTextures(GLsizei n, GLuint
textureNames) - texture Names ??? ?? ??? ????? n?? ???? ?? ??? ??
- GLboolean glIsTexture(GLuint textureName)
- ??? ??? ????? ?????? ??
- ??? ??? ???? ?? ??? ?? ???? GL_FALSE? ??
72??? ????? ??? ??
- glBindTexture()? ??? ????? ??? ??
- void glBindTexture(GLenum target, GLuint
texture) - ??? 0 ? ?? ?? ?? ??? textureName? ??? ? ??? ???
????? ?????, ? ??? ?? - ??? ???? ??? ????? ??? ? ? ??? ????? ???
- 0? ?? ??? textureName? ?? ? OpenGL? ??? ???? ???
??, ???? ?? ??? ???? ??
73??9-7 ??? ???? ??? texbind.c
- include ltGL/glut.hgt
- include ltstdlib.hgt
- include ltstdio.hgt
- ifdef GL_VERSION_1_1
- define checkImageWidth 64
- define checkImageHeight 64
- static GLubyte checkImagecheckImageHeightcheckI
mageWidth4 - static GLubyte otherImagecheckImageHeightcheckI
mageWidth4 - static GLuint texName2
74- void makeCheckImages(void)
-
- int i, j, c
-
- for (i 0 i lt checkImageHeight i)
- for (j 0 j lt checkImageWidth j)
- c ((((i0x8)0)((j0x8))0))255
- checkImageij0 (GLubyte) c
- checkImageij1 (GLubyte) c
- checkImageij2 (GLubyte) c
- checkImageij3 (GLubyte) 255
- c ((((i0x10)0)((j0x10))0))255
75- otherImageij0 (GLubyte) c
- otherImageij1 (GLubyte) 0
- otherImageij2 (GLubyte) 0
- otherImageij3 (GLubyte) 255
-
-
-
- void init(void)
-
- glClearColor (0.0, 0.0, 0.0, 0.0)
- glShadeModel(GL_FLAT)
- glEnable(GL_DEPTH_TEST)
76- makeCheckImages()
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1)
- glGenTextures(2, texName)
- glBindTexture(GL_TEXTURE_2D, texName0)
- glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_WRAP_S, GL_CLAMP) - glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_WRAP_T, GL_CLAMP) - glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_MAG_FILTER, - GL_NEAREST)
- glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_MIN_FILTER, - GL_NEAREST)
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
checkImageWidth, - checkImageHeight, 0, GL_RGBA,
GL_UNSIGNED_BYTE, - checkImage)
77- glBindTexture(GL_TEXTURE_2D, texName1)
- glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_WRAP_S, GL_CLAMP) - glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_WRAP_T, GL_CLAMP) - glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_MAG_FILTER, GL_NEAREST) - glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_MIN_FILTER, GL_NEAREST) - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,
GL_DECAL) - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
checkImageWidth, - checkImageHeight, 0, GL_RGBA,
GL_UNSIGNED_BYTE, - otherImage)
- glEnable(GL_TEXTURE_2D)
78- void display(void)
-
- glClear(GL_COLOR_BUFFER_BIT
GL_DEPTH_BUFFER_BIT) - glBindTexture(GL_TEXTURE_2D, texName0)
- glBegin(GL_QUADS)
- glTexCoord2f(0.0, 0.0) glVertex3f(-2.0, -1.0,
0.0) - glTexCoord2f(0.0, 1.0) glVertex3f(-2.0, 1.0,
0.0) - glTexCoord2f(1.0, 1.0) glVertex3f(0.0, 1.0,
0.0) - glTexCoord2f(1.0, 0.0) glVertex3f(0.0, -1.0,
0.0) - glEnd()
79- glBindTexture(GL_TEXTURE_2D, texName1)
- glBegin(GL_QUADS)
- glTexCoord2f(0.0, 0.0) glVertex3f(1.0, -1.0,
0.0) - glTexCoord2f(0.0, 1.0) glVertex3f(1.0, 1.0,
0.0) - glTexCoord2f(1.0, 1.0) glVertex3f(2.41421,
1.0, -1.41421) - glTexCoord2f(1.0, 0.0) glVertex3f(2.41421,
-1.0, -1.41421) - glEnd()
- glFlush()
-
- void reshape(int w, int h)
-
- glViewport(0, 0, (GLsizei) w, (GLsizei) h)
- glMatrixMode(GL_PROJECTION)
80- glLoadIdentity()
- gluPerspective(60.0, (GLfloat) w/(GLfloat) h,
1.0, 30.0) - glMatrixMode(GL_MODELVIEW)
- glLoadIdentity()
- glTranslatef(0.0, 0.0, -3.6)
-
- void keyboard(unsigned char key, int x, int y)
-
- switch (key)
- case 27
- exit(0)
- break
-
81- int main(int argc, char argv)
-
- glutInit(argc, argv)
- glutInitDisplayMode(GLUT_SINGLE GLUT_RGB
GLUT_DEPTH) - glutInitWindowSize(250, 250)
- glutInitWindowPosition(100, 100)
- glutCreateWindow(argv0)
- init()
- glutReshapeFunc(reshape)
- glutDisplayFunc(display)
- glutKeyboardFunc (keyboard)
- glutMainLoop()
- return 0
82- else
- int main(int argc, char argv)
-
- fprintf (stderr, "This program demonstrates a
feature which is not in OpenGL Version 1.0.\n") - fprintf (stderr, "If your implementation of
OpenGL Version 1.0 has the right extensions,\n") - fprintf (stderr, "you may be able to modify
this program to make it run.\n") - return 0
-
- endif
83?? ??
84- ??? ????? ???
- ??? ????? ??? ???? ? ? ????? ???? ??? ???? ????
??? ?? - ?? ??? ???? ???? ?? ? ??? ??? ??? ??? ? ??
- void glDeleteTexture(GLsizei n, const GLuint
textureName) - textureNames ??? ???? ??? n?? ??? ????? ??
85???? ???? ?? ??
- ? ?? ????? ??(resident)?? ??? ?? ?? ???? ?? ???
?? - GLboolean glAreTexturesResident(GLsizei n, const
GLuint textureNames, GLboolean residences) - ???? ?? ??? ????? ?? ?? ? ??
- textureNames ??? ??? ?? n? ??? ????? ?? ??? ??
- residences? ??? ?? ??? textureNames ??? ?? ???
????? ??? ?? ??? ???? ?? - glAreTexturesResident()? ??? ?? ??? ??
- ??? ????? ??? ????, ?? ??? ?? ?? ??
86??? ????
- ? ?? ???? ?? ??? ? ?? ????? ???? ???? ?? ??? ??
????? ???? ?? - void glPrioritizeTextures(GLsizei n, const
GLuint, textureNames, const GLclampf
priorities) - n?? textureNames?? ????, priorities ??? ????
????? ?? ???? ??? ????? ?? - priorities ??? ?????? 0.0, 1.0 ??? ??? ????.
- 0? ?? ?? ??? ???? 1? ?? ?? ??? ????.
87??? ??
- ???? ?? ???? ??? ??? ?????, ????? ??? ?? ??? ??
????? ??? ?? ?? ?? - glTexEnv()? ??? ??? ???? 4? ? ??? ??? ??? ??
- void glTexEnvif(GLenum target, GLenum pname,m
TYPE param) - void glTexEnvifv(GLenum target, GLenum pname,m
TYPE param) - ??? ???? ??? ??, target? GL_TEXTURE_ENV ??
- pname? GL_TEXTURE_ENV_MODE, GL_TEXTURE_ENV_COLOR
? - param? ??? ????? ???? ?????? ???? ?????? ????,
GL_DECAL, GL_REPLACE, GL_MODULATE, GL_BLEND - ???? ??? ???? ?? ??? ??? ???? ??? ??? ?? ???
?????? ??
88- ???? ??? ?? ?? (GL_REPLACE, GL_MODULATE)
??? ?? ?? ??? ?? ?? ??? ?? ??
GL_ALPHA C Cf A At C Cf A AfAt
GL_LUMINANCE C Lt A Af C CfLt A At
GL_ALUMINANCE_ALPHA C Lt C At C CfLt A AfAt
GL_INTENSITY C It A It C CfIt A AfIt
GL_RGB C Ct A At C CfCt A Af
GL_RGBA C Ct A Af C CfCt A AfAt
89- ???? ??? ??? ?? (GL_DECAL, GL_BLEND)
??? ?? ?? ??? ?? ?? ??? ??? ??
GL_ALPHA ???? ?? C Ct A AfAt
GL_LUMINANCE ???? ?? CCf(1-Lt)CcLt A At
GL_LUMINANCE_ALPHA ???? ?? CCf(1-Lt)CcLt A AtAt
GL_INTENSITY ???? ?? CCf(1-Lt)CcLt AAf(1-Lt)AcLt
GL_RGB C Ct A Af CCf(1-Lt)CcLt A Af
GL_RGBA CCf(1At)CtAt A At CCf(1-Lt)CcLt A AfAt
90- ??? ?? ??(GL_DECAL)? ????(GL_REPLACE)? ???? RGB?
RGBA ?? ????? ????, ???? ???? ????? ??? ?? - ??? ?(GL_MODULATE) ?????? ??? ???? ????? ????.
- ?? ??? GL_LUMINANCE, GL_LUMINANCE_ALPHA,
GL_INTENSITY? ? ???? ?? ??? ????. - GL_RGB? GL_RGBA ?? ???? ??? ???? ?? ??? ???? ????
?? ????. - ??? ???? ??? ??? ??? ??? ?? ???? ??? ?? ??? ??
91??? ??? ??
- ??? ? ??? ?? ? ??? ??? ?? ???? ??? ??? ??? ???? ?
- ?? ?? ????? ??? ??? ??? ???? ???? ??? ??
- ??? ??? ??? ?? ??? ??? ? ??? ????? ??
- void glTexCoord1234sifd(TYPE coords)
- void glTexCoord1234vsifd(TYPE coords)
- ??? ??(s, t, r, q)? ??
- ?????? ( x, y, z, w)? ???? ?? ??? ??
92???? ??? ???
- 0, 1 ?? ??? ??? ??? ??? ? ??, ??? ? ??? ?????
???? ? ? ??. - ?? ???? ??? ??? ??? ?? ?
- 1.0?? ??? 1.0?? ??
- 0.0?? ???? 0.0?? ??
- ???? ?? ???? ?????, ??? ???? ??? ?????
- ?? ??? ??? ?? ? ? ??? ??? ?????? ?? ??? ??
93- ?? ???? ??? ???? GL_LINEAR? ????? ??? ??? ?? ??
??? 2 2??? ??? ??? ?? - ???? ??? ??? ??? ??, ???? ??? ??? ??? ?? ???
- ???? GL_REPEAT ??? ?? ???
- ???? GL_CLAMP ????? ??? ??? ??? 2x2 ??? ???
- ???? GL_CLAMP_TO_EDGE ???? ?? ???.
- void glTexParameterif(GLenum target, GLenum
pname, TYPE param) - void glTexParameterifv(GLenum target, GLenum
pname, TYPE param) - ???? ?????? ?????, ??? ????? ???? ??? ???? ???
??? ??
94?? 9-1??
- glBegin(GL_QUADS)
- glTexCoord2f(0.0, 0.0) glVertex3f(-2.0, -1.0,
0.0) - glTexCoord2f(0.0, 3.0) glVertex3f(-2.0, 1.0,
0.0) - glTexCoord2f(3.0, 3.0) glVertex3f(0.0, 1.0,
0.0) - glTexCoord2f(3.0, 0.0) glVertex3f(0.0, -1.0,
0.0) - glTexCoord2f(0.0, 0.0) glVertex3f(1.0, -1.0,
0.0) - glTexCoord2f(0.0, 3.0) glVertex3f(1.0, 1.0,
0.0) - glTexCoord2f(3.0, 3.0) glVertex3f(2.41421,
1.0, -1.41421) - glTexCoord2f(3.0, 0.0) glVertex3f(2.41421,
-1.0, -1.41421) - glEnd()
95- GL_REPEAT ??? ??
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,
GL_REPEAT) - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,
GL_REPEAT)
96- GL_CLAMP ??? ??
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,
GL_CLAMP) - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,
GL_CLAMP)
97???? ???
GL_TEXTURE_WRAP_S GL_CLAMP, GL_CLAMP_TO_EDGE, GL_REPEAT
GL_TEXTURE_WRAP_T GL_CLAMP, GL_CLAMP_TO_EDGE, GL_REPEAT
GL_TEXTURE_WRAP_R GL_CLAMP, GL_CLAMP_TO_EDGE, GL_REPEAT
GL_TEXTURE_MAG_FILTER GL_CLAMP, GL_LINEAR
GL_TEXTURE_MIN_FILTER GL_NEAREST, GL_LINEAR, GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST_MIPMAP_LINEAR, GLLINEAR_MIPMAP_NEAREST, GL_LINER_MIPMAP_LINEAR
98???? ???
GL_TEXTURE_BORDER_COLOR 0.0, 1.0 ??? ?? 4?? ??
GL_TEXTURE_PRIORITY 0.0, 1.0?? ??? ??? ????
GL_TEXTURE_MIN_LOD ????? ?? ??? ??
GL_TEXTURE_MAX_LOD ????? ?? ??? ??
GL_TEXTURE_BASE_LEVEL ?? ???? ?? ??? ??
GL_TEXTURE_MAX_LEVEL ?? ???? ?? ??? ??
99??? ?? ???? ????
- ??? ??? ????, ??? ??? ??? ???? ???? ??? ??? ????
?? ??? ??? ?? ?? - glTextureCoord() ??? OpenGL? ???? ??? ??? ?????
??. - void glTexGenifd(GLenum coord, GLenum pname,
TYPE param) - void glTexGenidfv(GLenum coord, GLenum pname,
TYPE param) - ? ?? ???? coord? ??? ??? ?????? ???? ?? GL_S,
GL_T, GL_R, GL_Q ?? - pname? GL_TEXTURE_GEN_MODE, GL_OBJECT_PLANE,
GL_EYE_PLANE - param? GL_OBJECT_LINEAR, GL_EYE_LINEAR,
GL_SPHERE_LINEAR
100- ??? ???
- GL_TEXTURE_GEN_MODE? GL_OBJECT_LINEAR? ????? ?
- ?? ??? ??(x0, y0, z0, w0)??? ?? ??
- ??? ?? p1x0 p2y0 p3z0 p4w0
- p14? GL_OBJECT_PLANE ?? ?? pname ??? ??
glTextGenv()? param ??? ?? - p14? ??? ??? ? ? ??? ??? ?? ??? ??? ??
- ?? ??, p2p3p40??, p11?? ? ??? ??? x0 ?? ???
??? ????. - ??? ??? ? ???? ????, ?? ???? ????, ??? ? ?? ?? ??
?? 0??.
101- static Glfloat xequalzero 1.0, 0.0, 0.0,
0.0 - x0 ??? ??
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, xequalzero)
- ????? ?? ???? ?? ??? ??.
- Static GLFloat slanted 1.0, 1.0, 1.0, 0.0
- ?? ???? xyz0 ??? ??, ????? ???.
- GL_OBJECT_LINEAR ??
- ??? ????? ??? ??? ????.
- ???? ??? ??? ?? ?? ???? ??? ???? ???.
102- GL_EYE_LINEAR ??
- ???? ?? ?? ???? ???? ???
- ???? ?? ??? ??? ??(p1, p2, p3, p4)? ??? ??? ????
???. - (p1, p2, p3, p4) (p1, p2, p3, p4) M-1
- (xe, ye, ze, we) ??? ????
- (p1, p2, p3, p4)? pname? GL_EYE_PLANE ?? ????? ?
glTexGen()? param ??? ??? - ??? ?? p1 xe p2 ye p3 ze p4 we
103??9-8 ?? ??? ?? ?? texgen.c
- include ltGL/glut.hgt
- include ltstdlib.hgt
- include ltstdio.hgt
- define stripeImageWidth 32
- GLubyte stripeImage4stripeImageWidth
- ifdef GL_VERSION_1_1
- static GLuint texName
- endif
104- void makeStripeImage(void)
- int j
-
- for (j 0 j lt stripeImageWidth j)
- stripeImage4j (GLubyte) ((jlt4) ? 255
0) - stripeImage4j1 (GLubyte) ((jgt4) ? 255
0) - stripeImage4j2 (GLubyte) 0
- stripeImage4j3 (GLubyte) 255
-
-
- static GLfloat xequalzero 1.0, 0.0, 0.0,
0.0 - static GLfloat slanted 1.0, 1.0, 1.0, 0.0
- static GLfloat currentCoeff
105- static GLenum currentPlane
- static GLint currentGenMode
- void init(void)
-
- glClearColor (0.0, 0.0, 0.0, 0.0)
- glEnable(GL_DEPTH_TEST)
- glShadeModel(GL_SMOOTH)
- makeStripeImage()
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1)
- ifdef GL_VERSION_1_1
- glGenTextures(1, texName)
- glBindTexture(GL_TEXTURE_1D, texName)
106- endif
- glTexParameteri(GL_TEXTURE_1D,
GL_TEXTURE_WRAP_S, GL_REPEAT) - glTexParameteri(GL_TEXTURE_1D,
GL_TEXTURE_MAG_FILTER, GL_LINEAR) - glTexParameteri(GL_TEXTURE_1D,
GL_TEXTURE_MIN_FILTER, GL_LINEAR) - ifdef GL_VERSION_1_1
- glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA,
stripeImageWidth, 0, - GL_RGBA, GL_UNSIGNED_BYTE,
stripeImage) - else
- glTexImage1D(GL_TEXTURE_1D, 0, 4,
stripeImageWidth, 0, - GL_RGBA, GL_UNSIGNED_BYTE,
stripeImage) - endif
107- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,
GL_MODULATE) - currentCoeff xequalzero
- currentGenMode GL_OBJECT_LINEAR
- currentPlane GL_OBJECT_PLANE
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE,
currentGenMode) - glTexGenfv(GL_S, currentPlane, currentCoeff)
- glEnable(GL_TEXTURE_GEN_S)
- glEnable(GL_TEXTURE_1D)
- glEnable(GL_CULL_FACE)
- glEnable(GL_LIGHTING)
- glEnable(GL_LIGHT0)
- glEnable(GL_AUTO_NORMAL)
108- glEnable(GL_NORMALIZE)
- glFrontFace(GL_CW)
- glCullFace(GL_BACK)
- glMaterialf (GL_FRONT, GL_SHININESS, 64.0)
-
- void display(void)
-
- glClear(GL_COLOR_BUFFER_BIT
GL_DEPTH_BUFFER_BIT) - glPushMatrix ()
- glRotatef(45.0, 0.0, 0.0, 1.0)
109- ifdef GL_VERSION_1_1
- glBindTexture(GL_TEXTURE_1D, texName)
- endif
- glutSolidTeapot(2.0)
- glPopMatrix ()
- glFlush()
-
- void reshape(int w, int h)
-
- glViewport(0, 0, (GLsizei) w, (GLsizei) h)
- glMatrixMode(GL_PROJECTION)
- glLoadIdentity()
110- if (w lt h)
- glOrtho (-3.5, 3.5, -3.5(GLfloat)h/(GLfloat
)w, - 3.5(GLfloat)h/(GLfloat)w, -3.5,
3.5) - else
- glOrtho (-3.5(GLfloat)w/(GLfloat)h,
- 3.5(GLfloat)w/(GLfloat)h, -3.5,
3.5, -3.5, 3.5) - glMatrixMode(GL_MODELVIEW)
- glLoadIdentity()
-
111- void keyboard (unsigned char key, int x, int y)
-
- switch (key)
- case 'e'
- case 'E'
- currentGenMode GL_EYE_LINEAR
- currentPlane GL_EYE_PLANE
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE,
currentGenMode) - glTexGenfv(GL_S, currentPlane,
currentCoeff) - glutPostRedisplay()
- break
112- case 'o'
- case 'O'
- currentGenMode GL_OBJECT_LINEAR
- currentPlane GL_OBJECT_PLANE
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE,
currentGenMode) - glTexGenfv(GL_S, currentPlane,
currentCoeff) - glutPostRedisplay()
- break
- case 's'
- case 'S'
- currentCoeff slanted
- glTexGenfv(GL_S, currentPlane,
currentCoeff) - glutPostRedisplay()
- break
113- case 'x'
- case 'X'
- currentCoeff xequalzero
- glTexGenfv(GL_S, currentPlane,
currentCoeff) - glutPostRedisplay()
- break
- case 27
- exit(0)
- break
- default
- break
-
-
114- int main(int argc, char argv)
-
- glutInit(argc, argv)
- glutInitDisplayMode (GLUT_SINGLE GLUT_RGB
GLUT_DEPTH) - glutInitWindowSize(256, 256)
- glutInitWindowPosition(100, 100)
- glutCreateWindow (argv0)
- init ()
- glutDisplayFunc(display)
- glutReshapeFunc(reshape)
- glutKeyboardFunc(keyboard)
- glutMainLoop()
- return 0
115????
116?? ?? ? ??
- ????? ??
- ????? ???? ???? ??? ???? ??? ??? ??? ??? ?? ????
???? ???? ?? ? - ????? ??? ?? ?????? ???? ??? ??? ??? ??? ????
???? ??? - ???? ????? ??? ??? ? ????? ?? ?? ??
- ???? ??? ??? ?? ??? ?? ???? ? ??? ?? ???, ???? ??
????, ???? ?? ??? ??? ???? ?? ?? ??? ??? ??, ???
????? ??. - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE,
GL_SPHERE_MAP) - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE,
GL_SPHERE_MAP) - glEnable(GL_TEXTURE_GEN_S)
- glEnable(GL_TEXTURE_GEN_T)
117??? ?? ?? ? ??
- ???? ?? ??? ????? ?? ??? ????, ??? ??? ??? ???
??? ???? ?? 44??? ??? - ???? ?? ??? ??? ??, ????? ???? ??? ??? ??? ?????
- ???? ??? ??????, ? ???? ????, ????, ?????? ? ??
??? ???? ? - ??? ??? ??? ??? ????, ??? ? ??? ??? ??? ???.
- glPushMatrix(), glPopMatrix(), glMultMatrix(),
glRotate() ?? ?? ?? ?? ?? ??? ??? ??? ???? ??. - ??? ??? ??? ???? ???? ?? ??? GL_TEXTURE ? ??
- glMatrixMode(GL_TEXTURE)
- ?
118?????? ? ??
- ?????? ??? ??? ???? ??? ???? ??
- OpenGL 1.2??? ? ??? ????? ??? ?? ???? ???? ?? ??
- ?? ????? ? ?? ??? ??? ??? ??
- ??? ??? ??? ?? ??? ??? ??? ??? ??? ???? ??? ??,
?? ??? ???? ?? - ??????? ??? ??, ??, ??, ??? ??? ?? ?? ??
119- ?? ????? ??
- 1) ????? ??? ?????? ??
- 2) ??? ???? ??? ?? ??? ???, ??, ??, ?? ?? ??? ???
???? ???? ??? ?? - 3) ??? ??? ? ??? ??? ?? ?? ?? ? ??? ??? ??? ????
GLMULTITEXCOORDARB()? ????
120??? ??? ??
- ??????? ??? ???? ??? ?????? ??? ?? ?? ?? ??? ???
???. - ??? ??
- ?? ???? ??? ???? ??? ???? ??
- ??? ?? ??? ???? ???? ??? ??
- ??? ???
- ??? ??
- ?? ??
- ??? ?? ??
- ?? ??? ?? ??
- ?? ?? ??(??? ?)
121- void glActiveTextureARB(GLenum texUnit)
- ???? ??? ?? ???? ??? ??? ??
- ?? ???? ??? ????? ????? ???? ???? ??? ??? ????
??? ? ??.
122?? ??? ??? ??
- ????????, ??? ??? ??? ??? ?? ??? ??? ?? ???? ??
- ??? ??? ??? ??? ??? ??? ??? ? ??
- void glMultiTexCoord1234sifdARB(GLenum
texUnit, TYPE coords) - void glMultiTexCoord1234sifdvARB(GLenum
texUnit, TYPE coords) - ??? ??? texUnit?? ???? ?? coords? ??? ?? ?? (s,
t, r, q)? ?? - texUnit ? ??? ??? glActiveTextureARB() ? ??? ??
??.
123??? ?? ??? ?? ??
- glMultiTexCooredARB()?? ?? 2 ?? ??? ?? ??? ??
??? ????? ?? ??? ?? ?? ???. - ?????? ???, ?? ??? ?? ??? ?????
- glActiveTextureARB()? ??? ??? ??? ??? ?? ??? ??
?? ??? ??? ???? ?? - glTexGen(..)
- glEnable(GL_TEXTURE_GEN_..)
- glDisable(GL_TEXTURE_GEN_..)
124- ?????? ???? ?? ??? ??? ??? ?????
- glClientActiveTextureARB()? glTexCoordPointer()?
?? ??? ??? ?? ??? ????? ?? - void glClientActiveTextureARB(GLenum texUnit)
- ?? ??? ??? ??? ?? ?? ??? ???? ??? ??? ??? ??
- texUnit? glActiveTextureARB()?? ??? ?? ?? ?? ???
GL_TEXTUREi_ARB ??? ???? ??