資源簡介
本程序為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?????????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全套技術資料
- 下一篇:啊哈,算法,啊哈算法完整版,有趣的算法書
評論
共有 條評論