y. As an additional reference, you might look at the chapter on texture mapping in
《Fundamentals of Three-Dimensional Computer Graphics by Alan Watt (Reading, Mass.: Addison-Wesley, 1990).》
Textures are simply rectangular arrays of data - for example, color
data, luminance data, or color and alpha data. The individual values in
a texture array are often called texels
.
Example 9-1 : A Texture-Mappedfs Checkerboard: checker.c
#include <GL/gl.h>
#include <GL/glu.h>
#include "aux.h"
#define checkImageWidth 64
#define checkImageHeight 64
GLubyte checkImage[checkImageWidth][checkImageHeight][3];
void makeCheckImage(void)
{
int i, j, r, c;
for (i = 0; i < checkImageWidth; i++) {
for (j = 0; j < checkImageHeight; j++) {
c = ((((i&0x8)==0)^((j&0x8))==0))*255;
checkImage[i][j][0] = (GLubyte) c;
checkImage[i][j][1] = (GLubyte) c;
checkImage[i][j][2] = (GLubyte) c;
}
}
}
void myinit(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
makeCheckImage();
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexImage2D(GL_TEXTURE_2D, 0, 3, checkImageWidth,
checkImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE,
&checkImage[0][0][0]);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
GL_NEAREST);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
glEnable(GL_TEXTURE_2D);
glShadeModel(GL_FLAT);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
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);
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 myReshape(GLsizei w, GLsizei h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, 1.0*(GLfloat)w/(GLfloat)h, 1.0, 30.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0, 0.0, -3.6);
}
int main(int argc, char** argv)
{
auxInitDisplayMode (AUX_SINGLE | AUX_RGBA | AUX_DEPTH);
auxInitPosition (0, 0, 500, 500);
auxInitWindow (argv[0]);
myinit();
auxReshapeFunc (myReshape);
auxMainLoop(display);
}
分享到:
相关推荐
通过阅读这三本书,你可以系统地掌握OpenGL的核心概念和技术,无论你是希望入门还是提升,这些书籍都将为你提供坚实的理论基础和实战经验。在学习过程中,建议配合实际编码练习,以加深理解并提高解决问题的能力。...
OpenGL教程之——OpenGL红宝书,是一份深入学习图形编程的重要资源,主要针对OpenGL这一广泛使用的图形库进行详细讲解。OpenGL是一种跨语言、跨平台的应用程序编程接口(API),用于渲染2D、3D矢量图形。它在游戏...
在学习OpenGL的过程中,有一系列经典的书籍和资源可以作为学习材料,下面详细叙述这些知识点。 ### OpenGL Shading Language (GLSL) GLSL是OpenGL的着色语言,它是专门用于编写GPU图形渲染程序的语言。GLSL在学习...
《OpenGL红宝书第8版》是一本针对OpenGL 4.x版本的权威指南,由Dave Shreiner、Graham Sellers、John Kessenich和Bill Licea-Kane等作者撰写,他们均是OpenGL领域的专家,对OpenGL的发展和演进有着深厚的贡献。...
OpenGL红宝书是学习图形编程的必备资源,其源代码则提供了丰富的实例,帮助读者更好地理解和应用书中所讲解的概念。 OpenGL是一种跨语言、跨平台的应用程序编程接口,它允许程序员直接与显卡进行交互,绘制复杂的三...
在学习和实践中,可以参考各种OpenGL教程和书籍,例如"OpenGL Programming Guide"(通常称为红宝书)和"OpenGL SuperBible"。此外,通过实践项目,如创建简单的3D场景、实现光照和阴影效果,或者开发交互式图形应用...
- **在线资源**:OpenGL官方网站([http://www.opengl.org](http://www.opengl.org))提供了大量的文档和技术规范,是学习OpenGL的重要资源之一。 - **社区论坛**:OpenGL相关的开发者社区和论坛也是获取帮助和支持...
5. **SOIL**:Simple OpenGL Image Library,用于加载和管理图像资源,如纹理,简化了纹理映射的过程。 6. **GLEW-MX**:一个改进版的GLEW,提供了对多窗口的支持。 7. **glm**:OpenGL Mathematics,是一个C++...
OpenGL编程指南(原书第7版)是一本全面介绍OpenGL编程的权威书籍,由Dava Shreiner著作,李军和徐波翻译。本书对OpenGL及其函数库做了深入的讲解,内容涵盖了OpenGL3.0和3.1版本的最新特性,并对之前的版本进行了...
OGLPG-9th-Edition.zip OpenGL编程指南(红皮书)包括资源文件OGLPG-9th-Edition.zip OpenGL编程指南(红皮书)包括资源文件OGLPG-9th-Edition.zip OpenGL编程指南(红皮书)包括资源文件OGLPG-9th-Edition.zip OpenGL编程...
在提供的资源"oglsuperbible5-read-only-xcode"中,很可能包含了与Xcode项目相关的设置和配置文件,让你可以直接打开并运行书中示例代码。 其次,"SB5"可能包含了本书的所有源代码,这些代码是学习OpenGL的重要实践...
OpenGL ES2.0学习”这本书将引导读者全面掌握OpenGL ES 2.0在Android平台上的应用,从基础概念到高级技巧,涵盖3D图形编程的各个方面,对于想要进入移动游戏开发领域的开发者来说是一本宝贵的资源。
同时,本书也包括了一个API参考部分,提供了与OpenGL着色语言相关的函数、宏、枚举类型和其他资源的详细信息。这样,开发者可以快速地找到所需的函数调用,并了解其用途与限制。在线索引的加入则使得查找这些API变得...
OpenGL Programming Guide 7th Edition 和 OpenGL ES 2.0 Programming Guide 是两本深入讲解OpenGL和OpenGL ES的重要书籍,对于想要学习或提升在图形编程方面技能的IT专业人士来说,它们是不可多得的资源。...
- **OpenGL与SPIR-V集成**:第九版书中详细介绍了OpenGL如何与SPIR-V集成,以及这种集成带来的优势,如更好的兼容性和更高的性能。 - **SPIR-V示例**:提供了具体的SPIR-V示例代码,帮助读者理解如何在OpenGL程序中...
- **学习资源**:分享了一些有助于学习OpenGL ES的资源和建议。 ### 总结 《Android 开发OpenGL图书》是一本非常适合想要深入了解Android平台上OpenGL ES开发的读者的书籍。通过阅读本书,你可以了解到Android的...
在介绍基本概念之后,书中详细讲解了现代OpenGL中的资源管理,如缓冲区对象、纹理、帧缓冲和着色器程序。这些资源在GPU上存储和处理数据,对于高效的图形渲染至关重要。同时,作者会讨论不同的纹理类型和过滤选项,...
该书的内容可能会被分为多个章节,每个章节聚焦于不同的主题,例如:核心概念的介绍、顶点和片段着色器的编写、几何着色器的使用、计算着色器的应用、以及如何使用OpenGL的高级功能如变换反馈、统一缓冲区和多渲染...