NeNe opengl 纹理映射

#include "stdafx.h"
#include <windows.h>		// Windows的头文件
#include<stdio.h>
//#include <gl/glew.h>		// 包含最新的gl.h,glu.h库
//#include <gl/glut.h>		// 包含OpenGL实用库
#include <gl/glaux.h>							// GLaux库的头文件
//#include<gl/GLU.h>

#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "glut32.lib")
#pragma comment(lib,"glaux.lib")//注意此处,此课的代码多添加了这个静态库的使用
//详见帖子:http://topic.csdn.net/u/20120823/10/c38703fc-8f7e-4b12-8460-afb7014efdf8.html

HGLRC           hRC=NULL;							// 窗口着色描述表句柄
HDC             hDC=NULL;							// OpenGL渲染描述表句柄
HWND            hWnd=NULL;							// 保存我们的窗口句柄
HINSTANCE       hInstance;							// 保存程序的实例

bool	keys[256];								// 保存键盘按键的数组
bool	active=TRUE;								// 窗口的活动标志,缺省为TRUE
bool	fullscreen=TRUE;							// 全屏标志缺省,缺省设定成全屏模式

GLfloat		rtri;						// 用于三角形的角度
GLfloat		rquad;						// 用于四边形的角度

GLfloat		xrot;								// X 旋转量
GLfloat		yrot;								// Y 旋转量
GLfloat		zrot;								// Z 旋转量

GLuint		texture[1];							// 存储一个纹理

AUX_RGBImageRec *LoadBMP(char *Filename)					// 载入位图图象
{
	FILE *File=NULL;							// 文件句柄

	if (!Filename)								// 确保文件名已提供
	{
		return NULL;							// 如果没提供,返回 NULL
	}
	File=fopen(Filename,"r");						// 尝试打开文件
	if (File)								// 文件存在么?
	{
		fclose(File);							// 关闭句柄
		return auxDIBImageLoad(Filename);				// 载入位图并返回指针
	}
	return NULL;								// 如果载入失败,返回 NULL
}

int LoadGLTextures()								// 载入位图(调用上面的代码)并转换成纹理
{

	int Status=FALSE;							// 状态指示器
	AUX_RGBImageRec *TextureImage[1];					// 创建纹理的存储空间
	memset(TextureImage,0,sizeof(void *)*1);				// 将指针设为 NULL
	// 载入位图,检查有无错误,如果位图没找到则退出
	if (TextureImage[0]=LoadBMP("shit.bmp"))
	{
		Status=TRUE;							// 将 Status 设为 TRUE
		glGenTextures(1, &texture[0]);					// 创建纹理

		// 使用来自位图数据生成 的典型纹理
		glBindTexture(GL_TEXTURE_2D, texture[0]);
		// 生成纹理
		glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);

		glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);	// 线形滤波
		glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);	// 线形滤波
	}
	if (TextureImage[0])							// 纹理是否存在
	{
		if (TextureImage[0]->data)					// 纹理图像是否存在
		{
			free(TextureImage[0]->data);				// 释放纹理图像占用的内存
		}

		free(TextureImage[0]);						// 释放图像结构
	}
	return Status;								// 返回 Status
}
时间: 2024-07-30 04:51:32

NeNe opengl 纹理映射的相关文章

android 纹理映射-OpenGL 纹理映射无法显示纹理

问题描述 OpenGL 纹理映射无法显示纹理 初学者,希望大侠们能做个解答,小弟在此先行谢过,问题很简单,但我琢磨好久都没搞出来,也找不出问题所在. 想要实现的的功能也很简单,就是纹理. 问题所在:运行之后只有背景,没有纹理 开发环境:Eclipse ADT 源代码: 一.SRC/ SFGame.java package com.gamewenli; import android.app.Activity; import android.content.res.Resources; import

java实现OpenGL ES纹理映射的方法_java

本文实例讲述了java实现OpenGL ES纹理映射的方法.分享给大家供大家参考.具体如下: 1. GlRenderer.java文件: package net.obviam.opengl; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; import android.content.Context; import android.opengl.GL

OpenGL入门介绍

1.OpenGL简介 OpenGL是近几年发展起来的一个性能卓越的三维图形标准,它是在SGI等多家世界闻名的计算机公司的倡导下,以SGI的GL三维图形库为基础制定的一个通用共享的开放式三维图形标准.目前,包括Microsoft.SGI.IBM.DEC.SUN.HP等大公司都采用了OpenGL做为三维图形标准,许多软件厂商也纷纷以OpenGL为基础开发出自己的产品,其中比较著名的产品包括动画制作软件Soft Image和3D Studio MAX.仿真软件Open Inventor.VR软件Wor

CI映射(加载)数据到view层的方法_php实例

本文实例讲述了CI映射(加载)数据到view层的方法.分享给大家供大家参考,具体如下: CI有个恶心的东西,就是需要把所有的数据都要放到$data数组中才能映射到view层,如: 当前我从数据库的link表(友情链接表,字段:id  name   url),搜索出来的数据方式: $query = $this->db->query("select id,name,url from cg_link where 1"); $links = $query->result();

Android OpenGL ES 纹理映射之glDrawElements

目标: 为四方体的每个面贴上一张图片,并自动旋转. 一.基础知识: 要实现每个面上贴一张图片,首先需要创建一个纹理,并使用图片来生成一个纹理. ========================================================================== 1.初始化: IntBuffer intBuffer = IntBuffer.allocate(2); // 1.允许2D贴图,纹理 gl.glEnable(GL10.GL_TEXTURE_2D); //

opengl编程学习笔记(四)(纹理映射)(结合nvdia OpenglSDk 的nvimage类)

Opengl中的纹理映射(texture mapping)是它的精华部分,在opengl的书中这一章也是所有章节中最为多的,在所有的opengl技术中,关于纹理映射的技术也是最多最丰富的,同时也是被开发人员使用各种trick最多的,因为纹理映射可以做很多的工作.在opengl的书中关于纹理映射有着很多的高级话题,而在这里,我只记录关于纹理映射的基础.   在纹理矩阵中的一个元素被称为texel,纹理矩阵可是是一维.二维.三维,texel也可以有rgba分量.纹理映射不能工作在索引颜色模式下 纹理

从零开始学习OpenGL ES之六 – 纹理及纹理映射

转自:http://bbs.ityran.com/article-9-1.html [转载]从零开始学习OpenGL ES之六 – 纹理及纹理映射 2011-9-14 23:49| 发布者: Iven| 查看: 9206| 评论: 15 摘要: 图形图像, 编程,编程, OpenGL ES, 教程,OpenGL ES 3D 在OpenGL ES中另一种为多边形定义颜色创建材质的方法是将纹理映射到多边形.这是一种很实用的方法,它可以产生很漂亮的外观并节省大量的处理器时间.比如说,你想在游戏中造一个

NeHe的OpenGL教程6(Bang翻译Delphi版)-如何用图片进行纹理映射

NeHe的OpenGL教程6(Bang翻译Delphi版)-如何用图片进行纹理映射 在这一课里,我将教会你如何把纹理映射到立方体的六个面,如下图: 将下图放在应用程序data目录下,起名NeHe.bmp program lesson6a; {    OpenGL DelphiXE    出处:根据NeHe代码翻译而来(http://nehe.gamedev.net/)    作者:帅宏军 shuaihj@163.com     注:本单元用到了glaux.dll和glaux.pas,下载地址为:

opengl 教程(16) 纹理映射

原帖地址:http://ogldev.atspace.co.uk/www/tutorial16/tutorial16.html       纹理映射意思就是把图片(或者说纹理)映射到3D模型的一个或多个面上.纹理可以是任何图片,使用纹理映射可以增加3D物体的真实感,我们常见的纹理有砖,植物叶子等等. 下图中是使用纹理映射和没有使用纹理映射四面体的比较.       要使用纹理映射,我们必须做以下三件事情:在OpenGL中装入纹理,为顶点提供纹理坐标(为了把纹理映射到顶点),用纹理坐标在纹理上执行