HP Workstation c3650 OpenGL 1.1 Reference for HP-UX 11.x - Page 39

gluBuild2DMipmaps,

Page 39 highlights

B gluBuild2DMipmaps If the GL version is 1.1 or greater, gluBuild2DMipmaps then uses proxy textures (see glTexImage1D) to determine whether there's enough room for the requested texture in the implementation. If not, width is halved (and halved again) until it fits. gluBuild2DMipmaps then uses proxy textures (see glTexImage2D) to determine if the implementation can store the requested texture in texture memory. If not, both dimensions are continually halved until it fits. Next, gluBuild2DMipmaps builds a series of images; it halves a copy of type (or a scaled version of type, if necessary) along both dimensions until size 11 is reached. At each level, each texel in the halved mipmap is an average of the corresponding four texels in the larger mipmap. (In the case of rectangular images, halving the images repeatedly eventually results in an n 1 or 1n configuration. Here, two texels are averaged instead.) glTexImage2D is called to load each of these images by level. If width and height are both powers of 2 which fit in the implementation, level 0 is a copy of data, and the highest level is log2(max(width, height)). For example, if width is 64 and height is 16, the following mipmaps are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and 1×1. These correspond to levels 0 through 6, respectively. See the glTexImage1D reference page for a description of the acceptable values for format. See the glDrawPixels reference page for a description of the acceptable values for type. Notes While you can't query the maximum level directly, you can derive it indirectly by calling glGetTexLevelParameter. First, query for the width and height actually used at level 0. (The width and height may be unequal to width and height since proxy textures might have shrunk or expanded them if width or height are not powers of 2 or if the implementation only supports smaller textures.) The maximum level can then be derived using the formula log2(max(width, height)). Errors • GLU_INVALID_VALUE is returned if width or height are negative. • GLU_INVALID_ENUM is returned if format or type is not one of the accepted values. See Also glDrawPixels, glTexImage1D, glTexImage2D, gluBuild1DMipmaps, gluErrorString, gluScaleImage Chapter 2 39

  • 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
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388
  • 389
  • 390
  • 391
  • 392
  • 393
  • 394
  • 395
  • 396
  • 397
  • 398
  • 399
  • 400
  • 401
  • 402
  • 403
  • 404
  • 405
  • 406
  • 407
  • 408
  • 409
  • 410
  • 411
  • 412
  • 413
  • 414
  • 415
  • 416
  • 417
  • 418
  • 419
  • 420
  • 421
  • 422
  • 423
  • 424
  • 425
  • 426
  • 427
  • 428
  • 429
  • 430
  • 431
  • 432
  • 433
  • 434
  • 435
  • 436
  • 437
  • 438
  • 439
  • 440
  • 441
  • 442
  • 443
  • 444
  • 445
  • 446
  • 447
  • 448
  • 449
  • 450
  • 451
  • 452
  • 453
  • 454
  • 455
  • 456
  • 457
  • 458
  • 459
  • 460
  • 461
  • 462
  • 463
  • 464
  • 465
  • 466
  • 467
  • 468
  • 469
  • 470
  • 471
  • 472
  • 473
  • 474
  • 475
  • 476
  • 477
  • 478
  • 479
  • 480
  • 481
  • 482
  • 483
  • 484
  • 485
  • 486

B
gluBuild2DMipmaps
Chapter 2
39
If the GL version is 1.1 or greater, gluBuild2DMipmaps then uses proxy textures (see
glTexImage1D) to determine whether there’s enough room for the requested texture in
the implementation. If not,
width
is halved (and halved again) until it fits.
gluBuild2DMipmaps then uses proxy textures (see glTexImage2D) to determine if the
implementation can store the requested texture in texture memory. If not, both
dimensions are continually halved until it fits.
Next, gluBuild2DMipmaps builds a series of images; it halves a copy of
type
(or a scaled
version of
type
, if necessary) along both dimensions until size 11 is reached. At each
level, each texel in the halved mipmap is an average of the corresponding four texels in
the larger mipmap. (In the case of rectangular images, halving the images repeatedly
eventually results in an n 1 or 1n configuration. Here, two texels are averaged instead.)
glTexImage2D is called to load each of these images by level. If
width
and
height
are
both powers of 2 which fit in the implementation, level 0 is a copy of data, and the
highest level is log
2
(max(
width, height
)). For example, if width is 64 and height is 16, the
following mipmaps are built: 64
×
16, 32
×
8, 16
×
4, 8
×
2, 4
×
1, 2
×
1 and 1
×
1. These correspond
to levels 0 through 6, respectively.
See the glTexImage1D reference page for a description of the acceptable values for
format
. See the glDrawPixels reference page for a description of the acceptable values for
type
.
Notes
While you can’t query the maximum level directly, you can derive it indirectly by calling
glGetTexLevelParameter. First, query for the width and height actually used at level 0.
(The width and height may be unequal to
width
and
height
since proxy textures might
have shrunk or expanded them if
width
or
height
are not powers of 2 or if the
implementation only supports smaller textures.) The maximum level can then be
derived using the formula log
2
(max(
width, height
)).
Errors
GLU_INVALID_VALUE is returned if
width
or
height
are negative.
GLU_INVALID_ENUM is returned if
format
or
type
is not one of the accepted
values.
See Also
glDrawPixels,
glTexImage1D,
glTexImage2D,
gluBuild1DMipmaps,
gluErrorString,
gluScaleImage