HP Workstation zx2000 HP OpenGL Implementation Guide for HP-UX 11.X (IPF versi - Page 15

glTexParameterfGL_TEXTURE_3D_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP

Page 15 highlights

overview of OpenGL GLubyte purpleRGBA[]= {255.0, 0.0, 255.0, 255.0}; GLubyte cyanRGBA[]= {0.0, 255.0, 255.0, 255.0}; GLubyte greyRGBA[] = {125.0, 125.0, 125.0, 255.0}; main(int argc, char *argv[]) { /* Open window for displaying.Put your favorite code here to open a window and perform perspective setup */ glEnable(GL_TEXTURE_3D_EXT); checkerPattern(TEXTURE_WIDTH, TEXTURE_HEIGHT, blueRGBA, whiteRGBA, &texture1[0][0][0], 4); checkerPattern(TEXTURE_WIDTH, TEXTURE_HEIGHT, redRGBA, yellowRGBA, &texture2[0][0][0], 4); checkerPattern(TEXTURE_WIDTH, TEXTURE_HEIGHT, greenRGBA, blackRGBA, &texture3[0][0][0], 4); checkerPattern(TEXTURE_WIDTH, TEXTURE_HEIGHT, purpleRGBA, cyanRGBA, &texture4[0][0][0], 4); /* create a 3D texture, textureConcat, which has a different checker pattern at each depth */ memcpy(&textureConcat[0][0][0], texture1, sizeof(texture1)); memcpy(&textureConcat[1][0][0], texture2, sizeof(texture2)); memcpy(&textureConcat[2][0][0], texture3, sizeof(texture3)); memcpy(&textureConcat[3][0][0], texture4, sizeof(texture4)); glTexParameterf(GL_TEXTURE_3D_EXT, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameterf(GL_TEXTURE_3D_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP); glTexParameterf(GL_TEXTURE_3D_EXT, GL_TEXTURE_WRAP_R_EXT, GL_CLAMP); glTexParameterf(GL_TEXTURE_3D_EXT, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameterf(GL_TEXTURE_3D_EXT, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexImage3DEXT(GL_TEXTURE_3D_EXT, 0, GL_RGBA, TEXTURE_WIDTH, TEXTURE_HEIGHT, TEXTURE_DEPTH, 0, GL_RGBA, GL_UNSIGNED_BYTE, &textureConcat); /* Fill a quad with depth of r = 0.125, passed into glTexCoord for every vertex. */ Add your quad code here /* Fill a quad with depth of r = 0.375, passed into glTexCoord for every vertex. */ Add your quad code here /* Fill a quad with depth of r = 0.625, passed into glTexCoord for every vertex. */ Add your quad code here /* Fill a quad with depth of r = 0.875, passed into glTexCoord for every vertex. */ Add your quad code here /* Now get a slice across the quad. Here's some quad code for a sample. Make sure you have appropriate viewing perspectives. */ glBegin(GL_QUADS); glNormal3f(0., 0., 1.); glTexCoord3f(0.0, 0.0, 0.0); glVertex3f(0.5, 0.5, 0.); glNormal3f(0., 0., 1.); glTexCoord3f(0.0, 1.0, 0.0); OpenGL implementation guide 1-11

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

OpenGL implementation guide
1–11
overview of OpenGL
GLubyte purpleRGBA[]= {255.0, 0.0, 255.0, 255.0};
GLubyte cyanRGBA[]= {0.0, 255.0, 255.0, 255.0};
GLubyte greyRGBA[] = {125.0, 125.0, 125.0, 255.0};
main(int argc, char *argv[]) {
/* Open window for displaying.Put your favorite code here to open
a window and perform perspective setup */
glEnable(GL_TEXTURE_3D_EXT);
checkerPattern(TEXTURE_WIDTH, TEXTURE_HEIGHT,
blueRGBA, whiteRGBA, &texture1[0][0][0], 4);
checkerPattern(TEXTURE_WIDTH, TEXTURE_HEIGHT,
redRGBA, yellowRGBA, &texture2[0][0][0], 4);
checkerPattern(TEXTURE_WIDTH, TEXTURE_HEIGHT,
greenRGBA, blackRGBA, &texture3[0][0][0], 4);
checkerPattern(TEXTURE_WIDTH, TEXTURE_HEIGHT,
purpleRGBA, cyanRGBA, &texture4[0][0][0], 4);
/* create a 3D texture, textureConcat, which has a different
checker pattern at each depth */
memcpy(&textureConcat[0][0][0], texture1, sizeof(texture1));
memcpy(&textureConcat[1][0][0], texture2, sizeof(texture2));
memcpy(&textureConcat[2][0][0], texture3, sizeof(texture3));
memcpy(&textureConcat[3][0][0], texture4, sizeof(texture4));
glTexParameterf(GL_TEXTURE_3D_EXT, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameterf(GL_TEXTURE_3D_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexParameterf(GL_TEXTURE_3D_EXT, GL_TEXTURE_WRAP_R_EXT,
GL_CLAMP);
glTexParameterf(GL_TEXTURE_3D_EXT, GL_TEXTURE_MAG_FILTER,
GL_NEAREST);
glTexParameterf(GL_TEXTURE_3D_EXT, GL_TEXTURE_MIN_FILTER,
GL_NEAREST);
glTexImage3DEXT(GL_TEXTURE_3D_EXT, 0, GL_RGBA, TEXTURE_WIDTH,
TEXTURE_HEIGHT, TEXTURE_DEPTH, 0, GL_RGBA, GL_UNSIGNED_BYTE,
&textureConcat);
/* Fill a quad with depth of r = 0.125, passed into glTexCoord
for every vertex. */ Add your quad code here
/* Fill a quad with depth of r = 0.375, passed into glTexCoord
for every vertex. */ Add your quad code here
/* Fill a quad with depth of r = 0.625, passed into glTexCoord
for every vertex. */ Add your quad code here
/* Fill a quad with depth of r = 0.875, passed into glTexCoord
for every vertex. */ Add your quad code here
/* Now get a slice across the quad. Here’s some quad code for a
sample. Make sure you have appropriate viewing perspectives. */
glBegin(GL_QUADS);
glNormal3f(0., 0., 1.);
glTexCoord3f(0.0, 0.0, 0.0);
glVertex3f(0.5, 0.5, 0.);
glNormal3f(0., 0., 1.);
glTexCoord3f(0.0, 1.0, 0.0);