/*
* Copyright (c) 1993-2003, Silicon Graphics, Inc.
* All Rights Reserved
*
* Permission to use, copy, modify, and distribute this software for any
* purpose and without fee is hereby granted, provided that the above
* copyright notice appear in all copies and that both the copyright
* notice and this permission notice appear in supporting documentation,
* and that the name of Silicon Graphics, Inc. not be used in
* advertising or publicity pertaining to distribution of the software
* without specific, written prior permission.
*
* THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" AND
* WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
* FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
* GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
* SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, LOSS OF
* PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF THIRD
* PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN ADVISED OF
* THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE POSSESSION, USE
* OR PERFORMANCE OF THIS SOFTWARE.
*
* US Government Users Restricted Rights
* Use, duplication, or disclosure by the Government is subject to
* restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
* (c)(1)(ii) of the Rights in Technical Data and Computer Software
* clause at DFARS 252.227-7013 and/or in similar or successor clauses
* in the FAR or the DOD or NASA FAR Supplement. Unpublished - rights
* reserved under the copyright laws of the United States.
*
* Contractor/manufacturer is:
* Silicon Graphics, Inc.
* 1500 Crittenden Lane
* Mountain View, CA 94043
* United State of America
*
* OpenGL(R) is a registered trademark of Silicon Graphics, Inc.
*/
/* combiner.c
* This program renders a variety of quads showing different
* effects of texture combiner functions.
*
* The first row renders an untextured polygon (so you can
* compare the fragment colors) and then the 2 textures.
* The second row shows several different combiner functions
* on a single texture: replace, modulate, add, add-signed,
* and subtract.
* The third row shows the interpolate combiner function
* on a single texture with a constant color/alpha value,
* varying the amount of interpolation.
* The fourth row uses multitexturing with two textures
* and different combiner functions.
* The fifth row are some combiner experiments: using the
* scaling factor and reversing the order of subtraction
* for a combination function.
*/
#include <GL/glut.h>
#include <stdlib.h>
#include <stdio.h>
#define imageWidth 8
#define imageHeight 8
/* arrays for two textures */
static GLubyte image0[imageHeight][imageWidth][4];
static GLubyte image1[imageHeight][imageWidth][4];
static GLuint texName[4];
void makeImages(void)
{
int i, j, c;
for (i = 0; i < imageHeight; i++) {
for (j = 0; j < imageWidth; j++) {
c = ((i&2)==0)*255; /* horiz b & w stripes */
image0[i][j][0] = (GLubyte) c;
image0[i][j][1] = (GLubyte) c;
image0[i][j][2] = (GLubyte) c;
image0[i][j][3] = (GLubyte) 255;
c = ((j&4)!=0)*128; /* wider vertical 50% cyan and black stripes */
image1[i][j][0] = (GLubyte) 0;
image1[i][j][1] = (GLubyte) c;
image1[i][j][2] = (GLubyte) c;
image1[i][j][3] = (GLubyte) 255;
}
}
}
void init(void)
{
GLint numunits[1];
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_SMOOTH);
makeImages();
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glGenTextures(4, texName);
glBindTexture(GL_TEXTURE_2D, texName[0]);
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, imageWidth, imageHeight,
0, GL_RGBA, GL_UNSIGNED_BYTE, image0);
glBindTexture(GL_TEXTURE_2D, texName[1]);
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, imageWidth, imageHeight,
0, GL_RGBA, GL_UNSIGNED_BYTE, image1);
/* smooth-shaded polygon with multiple texture coordinates */
glNewList (1, GL_COMPILE);
glBegin(GL_QUADS);
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.0, 0.0);
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.0, 0.0);
glColor3f (0.5, 1.0, 0.25);
glVertex3f(0.0, 0.0, 0.0);
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.0, 2.0);
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.0, 2.0);
glColor3f (1.0, 1.0, 1.0);
glVertex3f(0.0, 1.0, 0.0);
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 2.0, 2.0);
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 2.0, 2.0);
glColor3f (1.0, 1.0, 1.0);
glVertex3f(1.0, 1.0, 0.0);
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 2.0, 0.0);
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 2.0, 0.0);
glColor3f (1.0, 0.5, 0.25);
glVertex3f(1.0, 0.0, 0.0);
glEnd();
glEndList ();
}
void display(void)
{
static GLfloat constColor[4] = {0.0, 0.0, 0.0, 0.0}; /* for use as constant texture color */
glClear(GL_COLOR_BUFFER_BIT);
glDisable(GL_TEXTURE_2D); /* untextured polygon--see the "fragment" colors */
glPushMatrix();
glTranslatef(0.0, 5.0, 0.0);
glCallList(1);
glPopMatrix();
glEnable(GL_TEXTURE_2D);
/* draw ordinary textured polys; 1 texture unit; combine mode disabled */
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glPushMatrix();
glBindTexture(GL_TEXTURE_2D, texName[0]);
glTranslatef(1.0, 5.0, 0.0);
glCallList(1);
glPopMatrix();
glPushMatrix();
glBindTexture(GL_TEXTURE_2D, texName[1]);
glTranslatef(2.0, 5.0, 0.0);
glCallList(1);
glPopMatrix();
/* different combine modes enabled; 1 texture unit
* defaults are:
* glTexEnvf(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE);
* glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
* glTexEnvf(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_PREVIOUS_ARB);
* glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
*/
glBindTexture(GL_TEXTURE_2D, texName[0]);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
glTexEnvf(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE);
glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
glPushMatrix();
glTranslatef(1.0, 4.0, 0.0);
glCallList(1);
glPopMatrix();
glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_MODULATE);
glTexEnvf(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_PREVIOUS_ARB);
glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
glPushMatrix();
glTranslatef(2.0, 4.0, 0.0);
glCallList(1);
glPopMatrix();
glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_ADD);
glPushMatrix();
glTranslatef(3.0, 4.0, 0.0);
glCallList(1);
glPopMatrix();
glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_ADD_SIGNED_ARB);
glPushMatrix();
glTranslatef(4.0, 4.0, 0.0);
glCallList(1);
glPopMatrix();
glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_SUBTRACT_ARB);
glPushMatrix();
glTranslatef(5.0, 4.0, 0.0);
glCallList(1);
glPopMatrix();
/*
没有合适的资源?快使用搜索试试~ 我知道了~
opengl红宝书源代码
共161个文件
c:72个
pdb:9个
ncb:8个
4星 · 超过85%的资源 需积分: 12 24 下载量 139 浏览量
2013-03-17
22:13:29
上传
评论 3
收藏 2.15MB RAR 举报
温馨提示
《Open GL编程指南(原书第7版)》对OpenGL以及OpenGL实用函数库进行了全面而又权威的介绍,素有“OpenGL红宝书”之誉,资源为本书源代码
资源推荐
资源详情
资源评论
收起资源包目录
opengl红宝书源代码 (161个子文件)
leeds.bin 704KB
combiner.c 13KB
material.c 11KB
shadowmap.c 10KB
tesswind.c 9KB
dof.c 9KB
surfpoints.c 8KB
accpersp.c 8KB
teapots.c 8KB
tess.c 7KB
polyoff.c 7KB
select.c 7KB
cubemap.c 7KB
texgen.c 7KB
texsub.c 7KB
mipmap.c 6KB
pointp.c 6KB
font.c 6KB
multitex.c 6KB
texbind.c 6KB
wrap.c 6KB
picksquare.c 6KB
quadric.c 6KB
varray.c 6KB
pickdepth.c 6KB
trim.c 6KB
stencil.c 6KB
multisamp.c 6KB
surface.c 6KB
stroke.c 6KB
accanti.c 6KB
fogcoord.c 6KB
fog.c 6KB
alpha3D.c 5KB
texture3d.c 5KB
feedback.c 5KB
checker.c 5KB
texturesurf.c 5KB
image.c 5KB
polys.c 5KB
colormat.c 5KB
blendeqn.c 5KB
movelight.c 5KB
aaindex.c 5KB
aargb.c 5KB
lines.c 5KB
bezmesh.c 5KB
scene.c 4KB
unproject.c 4KB
convolution.c 4KB
torus.c 4KB
histogram.c 4KB
fogindex.c 4KB
mvarray.c 4KB
alpha.c 4KB
bezsurf.c 4KB
robot.c 4KB
texprox.c 4KB
list.c 4KB
planet.c 4KB
light.c 4KB
model.c 4KB
double.c 4KB
bezcurve.c 4KB
minmax.c 4KB
colortable.c 4KB
colormatrix.c 4KB
drawf.c 4KB
clip.c 3KB
hello.c 3KB
smooth.c 3KB
cube.c 3KB
readImage.c 3KB
texturesurf.dsp 3KB
texture3d.dsp 3KB
texprox.dsp 3KB
alpha3D.dsp 3KB
texgen.dsp 3KB
mipmap.dsp 3KB
hello.dsp 3KB
alpha.dsp 3KB
texturesurf.dsw 547B
texture3d.dsw 543B
texprox.dsw 539B
alpha3D.dsw 539B
mipmap.dsw 537B
texgen.dsw 537B
hello.dsw 535B
alpha.dsw 535B
texturesurf.exe 200KB
texgen.exe 188KB
alpha3D.exe 184KB
mipmap.exe 184KB
alpha.exe 184KB
texture3d.exe 168KB
texprox.exe 168KB
hello.exe 168KB
jitter.h 6KB
vc60.idb 49KB
texturesurf.ilk 220KB
共 161 条
- 1
- 2
资源评论
- lwkobe2015-07-25很好的说!看了一部分,感觉挺不错的!
- l4kangaxx2015-04-15东西不错,但是版本略旧了。
- 吹风子2013-06-22很好的说!看了一部分,感觉挺不错的!
xixicoding
- 粉丝: 0
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功