资源简介

本程序为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

评论

共有 条评论