资源简介
本程序为OpenGL纹理贴图小程序,图片格式为png。代码中如有疑问请指出,会为你一一解答。
代码片段和文件信息
#include
#include
#include
#include
#include
#include “pngtools.h“
#ifdef __APPLE__
#include // OS X version of GLUT
#else
#define FREEGLUT_STATIC
#include // Windows FreeGlut equivalent
#endif
#include
using namespace std;
GLfloat vertexArray[12] = {-0.9f -0.9f 0.0f
0.9f -0.9f 0.0f
0.9f 0.9f 0.0f
-0.9f 0.9f 0.0f };
GLfloat texCoord[8] = { 0.0f 0.0f
1.0f 0.0f
1.0f 1.0f
0.0f 1.0f };
pngtexture *PNGTex;
GLuint vao;
GLuint vertex_buffer;
GLuint texture_buffer;
GLuint TextureID;
GLuint vert_shader frag_shader;
GLuint program;
/************************************************************************************/
void ChangeSize(int w int h)
{
glViewport(0 0 w h);
}
/************************************************************************************/
#include
#include
#define MAX_SHADER_LENGTH 8192
#define MAX_TARGET_NUM 10
GLchar shaderText[MAX_SHADER_LENGTH];
void gltLoadShaderSrc(const char *szShaderSrc GLuint shader)
{
GLchar *fsStringPtr[1];
fsStringPtr[0] = (GLchar *)szShaderSrc;
glShaderSource(shader 1 (const GLchar **)fsStringPtr NULL);
}
bool gltLoadShaderFile(const char *szFile GLuint shader)
{
GLint shaderLength = 0;
FILE *fp;
// Open the shader file
fp = fopen(szFile “r“);
if(fp != NULL)
{
// See how long the file is
while (fgetc(fp) != EOF)
shaderLength++;
// Allocate a block of memory to send in the shader
assert(shaderLength < MAX_SHADER_LENGTH); // make me bigger!
if(shaderLength > MAX_SHADER_LENGTH)
{
fclose(fp);
return false;
}
// Go back to beginning of file
rewind(fp);
// Read the whole file in
if (shaderText != NULL)
fread(shaderText 1 shaderLength fp);
// Make sure it is null terminated and close the file
shaderText[shaderLength] = ‘\0‘;
fclose(fp);
}
else
return false;
// Load the string
gltLoadShaderSrc((const char *)shaderText shader);
return true;
}
void SetupRC()
{
glClearColor(1.0f 1.0f 1.0f 1.0f);
PNGTex = ReadPNGFromFile(“map.png“);
glGenVertexArrays(1 &vao);
glBindVertexArray(vao);
glGenBuffers(1 &vertex_buffer);
glBindBuffer(GL_ARRAY_BUFFER vertex_buffer);
glBufferData(GL_ARRAY_BUFFER
4 * sizeof(GLfloat) * 3
vertexArray GL_STATIC_DRAW);
glVertexAttribPointer(0 3 GL_FLOAT GL_FALSE 0 (void *)0);
glEnableVertexAttribArray(0);
glGenBuffers(1 &texture_buffer);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-04-14 13:16 PNG_texture\
文件 287 2017-12-27 16:47 PNG_texture\Identity.fp
文件 327 2017-12-27 16:47 PNG_texture\Identity.vp
文件 5338 2016-10-11 13:30 PNG_texture\main.cpp
文件 63443043 2017-12-27 16:47 PNG_texture\map.png
文件 4446 2016-10-11 13:30 PNG_texture\pngtools.cpp
文件 382 2016-10-11 13:27 PNG_texture\pngtools.h
文件 308 2016-10-11 12:58 PNG_texture\Rectangle.pro
- 上一篇:HI3559A全套技术资料
- 下一篇:啊哈,算法,啊哈算法完整版,有趣的算法书
相关资源
- VS2012OpenGL配置所需要的全部libdllh文件
- 基于OpenGL的仿蝗虫机器人三维动态仿
- 图形学 - OpenGL实现3种三维茶壶显示源
- opengl程序-会跳舞的骷髅
- opengl实现三维网格光顺Laplacian算法
- opengl——爆炸
- OpenGL三维地形建模
- opengl游戏编程徐明亮版(含源码)
- 用OPENGL画的一个简单的直升飞机
- opengl完美天空盒
- 3D绘图程序设计:使用Direct3D 10/9和Ope
- OpenGL绘制可运动自行车源程序.zip
- OpenGL实现飘动效果
- opengl室内场景的绘制,包括碰撞检测
- OpenGL场景漫游
- 用opengl实现的太阳系模型
- OpenGL 3D贪吃蛇程序,很小
- OpenGL爆炸碎片化效果 源码
- OpenGL三茶壶三光源光源绕着茶壶旋转
- 10个OpenGL的源码
- vc写的一个游戏里面三维场景漫游
- 背景透明的Static、Radio、CheckBox、Gro
- OpenGL实现的简单游戏引擎
- OpenGL游戏程序设计源码
- glew最新版本glew1.11.0
- PNG图片转Delphi中Image.Picture.data代码-工
- OpenGL 火箭
- PngViewer 查看png图片的小工具
- 天空盒和地面
- 三维场景漫游.zip
评论
共有 条评论