亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? postprocessfbodemo.cpp

?? 6410BSP3
?? CPP
字號:
#include "stdafx.h"

#include "glHelpers.h"


#include "Pawn_Data.h"
#include "Fsq_Data.h"

#include "AniPolka.frag.h"
#include "AniPolka.vert.h"

#include "PostProcess.vert.h"
#include "PPGray.frag.h"

#include <math.h>

//static GLuint geomVbo=0;


static const int numTris = nNumTrisPawn;
static const float* geomData = Pawn_Data;
static const int vertexSize = 4*nNumAttributesPawn;


static float mv[16];
static float mvp[16];
//static float nm[16];
static float proj[16];
static float tmvp[16];

//Load shaders from disk... will only work on Windows!
//ghProgram polkaProg("SH/AniPolka.vert","SH/AniPolka.frag");

//Use the shader included in headerfile
static ghProgram polkaProg(AniPolkaVertShader, AniPolkaFragShader);
static ghProgram ppGrayProg(PostProcessVertShader, PPGrayFragShader);

static GLuint renderTex;
//static GLuint renderBuffer;
static GLuint fbo;
static GLuint rbo;
const int RTwidth = 800;//240;
const int RTheight = 480;//320;

static void demoInit()
{
    glViewport(0,0, GLH_WIDTH, GLH_HEIGHT);
    glClearColor(0.2f,0.2f,0.2f,1.0f);
    glClearDepthf(1.0f);

    glEnable(GL_DEPTH_TEST);

    matIdentity(proj);
    matPerspective(proj, 45, GLH_WIDTH/float(GLH_HEIGHT), 0.1f, 10000.0f);

    matIdentity(mv);
    matTranslate(mv, 0.0, 0.0,-30.0);

    matMult(mvp, proj, mv);

    //VBO
    /*
    glGenBuffers(1, &geomVbo);

    glBindBuffer(GL_ARRAY_BUFFER, geomVbo);
    glBufferData(GL_ARRAY_BUFFER, vertexSize*numTris*3,geomData ,GL_STATIC_DRAW);
    */

    checkGLerror("Post array buffer data");

    //Program
    polkaProg.bindAttribLoc(0, "vertexPos");
    polkaProg.bindAttribLoc(1, "iNormal");

    polkaProg.load();

    ppGrayProg.bindAttribLoc(0, "vertexPos");
    ppGrayProg.bindAttribLoc(1, "iTexcoord");

    ppGrayProg.load();

    glActiveTexture(GL_TEXTURE0);
    glGenTextures(1, &renderTex);
    glBindTexture(GL_TEXTURE_2D, renderTex);
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);


    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, RTwidth, RTheight, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);

    checkGLerror("Post tex create");
    printf("\nTex id: %d\n",renderTex);

    
    glGenRenderbuffers(1, &rbo);
    glBindRenderbuffer(GL_RENDERBUFFER, rbo);


    glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, RTwidth, RTheight);

    checkGLerror("Post RBO create");
    printf("\nRBO: %d\n", rbo);

    glGenFramebuffers(1, &fbo);
    printf("\nFBO: %d\n", fbo);
    glBindFramebuffer(GL_FRAMEBUFFER, fbo);

    checkGLerror("Post FBO create");

    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, renderTex, 0);
    checkGLerror("Post FBO tex attach");
//    glDisable(GL_DEPTH_TEST);
//    glDepthMask(GL_FALSE);
    checkFBStatus("Post FBO tex attach");

    glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rbo);

    checkGLerror("Post FBO rbo attach");
    checkFBStatus("Post FBO rbo attach");

    glBindFramebuffer(GL_FRAMEBUFFER, 0);


//    glEnable(GL_DEPTH_TEST);
//    glDepthMask(GL_TRUE);

    //glEnable(GL_BLEND);
    //glBlendFunc(GL_ONE,GL_ONE);

}


static UINT32 elapsedTime=0;

void PostProcessFBORender()
{
    glUseProgram(polkaProg.prog);

    static float a = 0.0;
    a = 5.0f * (elapsedTime*0.1f);
    if(++elapsedTime > 100)
    {
        elapsedTime = 0;
    }
    float scale = (float) abs(int(sin(a)));
    float lpY = 0.75f;
    float lpX = 30.0f * sin(a);
    float lpZ = -10.0f + 30.0f * cos(a);
    bool nrmMatcalc = true;

//-------------Render to FBO-------------
    glBindFramebuffer(GL_FRAMEBUFFER, fbo);
    glViewport(0,0,RTwidth, RTheight);
    //Clear frame
    glClearColor(0.2f,0.2f,0.2f,1.0f);
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    
    checkGLerror("Post FBO clear");

    glUseProgram(polkaProg.prog);

    if(nrmMatcalc)
    {
        //Normal matrix calculation
        matInverse(tmvp, mv);
        matTranspose(tmvp);
        nrmMatcalc = false;
    }
    //Specify uniforms
    glUniformMatrix4fv(polkaProg.loc("mv"), 1, false, mv);
    glUniformMatrix4fv(polkaProg.loc("proj"),1, false,proj);
    glUniformMatrix4fv(polkaProg.loc("mvp"),1, false, mvp);
    glUniformMatrix4fv(polkaProg.loc("normalMat"),1, false, tmvp);

    glUniform4f(polkaProg.loc("lightPos"), lpX, lpY, lpZ,0.0);
    glUniform1f(polkaProg.loc("time"), 0.2f*a);
    glUniform4f(polkaProg.loc("color"), 1.0f * scale, 1.0f * scale,0.0f,0.0f);

    //Geometry
    glEnableVertexAttribArray(0);
    glEnableVertexAttribArray(1);
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, vertexSize, geomData);
    glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, vertexSize, (char*)(geomData)+4*sizeof(float));

    //Draw!!!
//    printf("draw1\n");
    glDrawArrays(GL_TRIANGLES, 0,numTris*3);
//    printf("draw1 done\n");

//-------------Render to back display buffer-------------
    glBindFramebuffer(GL_FRAMEBUFFER, 0);
    glViewport(0,0, GLH_WIDTH, GLH_HEIGHT);

    glClearColor(0.2f,0.2f,0.2f,1.0f);
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    
    glUseProgram(ppGrayProg.prog);
    glUniform1f(ppGrayProg.loc("time"), 0.2f*a);
    glUniform1i(ppGrayProg.loc("tex"), 0);
    glUniform1f(ppGrayProg.loc("width"),(float) RTwidth);
    glUniform1f(ppGrayProg.loc("height"), (float)RTheight);

    glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, nNumAttributesFsq*4, Fsq_Data);
    glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, nNumAttributesFsq*4, (char*)(Fsq_Data)+4*sizeof(float));

//    printf("draw2\n");
    glDrawArrays(GL_TRIANGLES, 0, nNumTrisFsq*3);
//    printf("draw1 done\n");

}



int PostProcessFBODemo()
{
    demoInit();
/*
    DWORD diff = 0;
    DWORD start = GetTickCount();

    for(int demo_loop = 0; demo_loop<200;demo_loop++)
    {DWORD start_render = GetTickCount();
        //Render Scene
        render();

    DWORD end_render = GetTickCount();
    diff += (end_render - start_render);
        //Swap Buffers
        eglSwapBuffers ( dpy, surface);
        _DEGLSwapBuffers();
    }
        
    DWORD end = GetTickCount();
    float fps = (float)(200.0*1000)/(float)(end - start);

    printf("start %d \n",start);
    printf("end %d \n",end);
    printf("fps %f \n",fps);
    printf("fps for only render %f \n",(200.0*1000)/(float)diff);
*/
    return 1;
}

int PostProcessFBODeinit()
{
    glDeleteRenderbuffers(1, &rbo);
    glDeleteFramebuffers(1, &fbo);
    polkaProg.reset();
    ppGrayProg.reset();
    return 1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
男女性色大片免费观看一区二区 | 国产欧美精品一区二区三区四区| 色综合天天综合给合国产| 国产乱码精品一品二品| 国产综合久久久久久鬼色| 国精产品一区一区三区mba视频 | 男人的天堂亚洲一区| 图片区小说区区亚洲影院| 日韩精品视频网| 捆绑调教一区二区三区| 国产精一品亚洲二区在线视频| 国产成人亚洲精品青草天美| 成人h版在线观看| 91一区在线观看| 欧美妇女性影城| 精品第一国产综合精品aⅴ| 国产亚洲精品aa午夜观看| 日韩伦理免费电影| 亚洲电影在线播放| 激情文学综合网| 91色.com| 91精品国产综合久久久久久久 | av一区二区三区在线| www.av精品| 欧美三级资源在线| 久久久精品免费网站| 亚洲妇熟xx妇色黄| 国产大陆a不卡| 欧美自拍偷拍午夜视频| 久久免费偷拍视频| 亚洲午夜精品久久久久久久久| 开心九九激情九九欧美日韩精美视频电影| 精品一区二区三区香蕉蜜桃 | 日本不卡在线视频| 岛国精品在线观看| 欧美喷潮久久久xxxxx| 国产精品无码永久免费888| 亚洲r级在线视频| eeuss鲁一区二区三区| 日韩一级大片在线| 亚洲色大成网站www久久九九| 伦理电影国产精品| 欧美日韩一区二区在线视频| 国产欧美日韩另类一区| 日韩精品成人一区二区三区| 波多野结衣中文字幕一区二区三区| 88在线观看91蜜桃国自产| 自拍av一区二区三区| 国产综合久久久久影院| 7777精品伊人久久久大香线蕉完整版| 日本一区二区三区电影| 韩国女主播一区| 91精品国产品国语在线不卡| 亚洲综合图片区| 色综合 综合色| 国产精品国产三级国产普通话蜜臀| 麻豆成人久久精品二区三区红| 欧美伊人精品成人久久综合97| 日本一区二区动态图| 国产精品白丝jk黑袜喷水| 日韩一级片网址| 日韩国产精品91| 欧美日韩激情一区二区三区| 亚洲男女一区二区三区| 成人黄色综合网站| 国产欧美精品在线观看| 国产成人免费在线观看| 亚洲精品一区二区三区在线观看 | 亚洲免费观看高清完整版在线观看 | 狠狠色丁香婷婷综合| 欧美一级片免费看| 日韩和欧美一区二区三区| 欧美日韩日日摸| 亚洲成人激情自拍| 91精品国产欧美一区二区成人| 亚洲国产一二三| 欧美日韩国产在线播放网站| 亚洲不卡在线观看| 91精品欧美综合在线观看最新| 日韩精品乱码av一区二区| 日韩视频一区在线观看| 精品亚洲免费视频| 国产精品色在线观看| 99免费精品视频| 一区二区欧美国产| 91精品国产欧美一区二区18| 激情综合一区二区三区| 久久综合久久综合久久综合| 成人网在线免费视频| 一区二区三区日韩精品视频| 制服丝袜亚洲网站| 国产精华液一区二区三区| 亚洲欧美一区二区久久| 欧美精品在线观看一区二区| 久久99精品久久久久久动态图 | 成人黄动漫网站免费app| 亚洲乱码国产乱码精品精的特点| 欧美军同video69gay| 免费看欧美美女黄的网站| 久久久91精品国产一区二区三区| 91丨九色丨国产丨porny| 亚洲va韩国va欧美va精品| 精品国产电影一区二区| 色哟哟欧美精品| 极品少妇xxxx精品少妇| 亚洲综合久久久| 久久久久久久久久久电影| 91久久精品国产91性色tv| 蜜桃一区二区三区四区| 1区2区3区欧美| 精品少妇一区二区三区视频免付费| 高清beeg欧美| 免费观看30秒视频久久| 亚洲精品日日夜夜| 国产欧美日韩综合| 日韩精品一区二区三区视频播放| 波多野结衣亚洲一区| 免费成人在线观看视频| 亚洲人成7777| 国产亚洲精品bt天堂精选| 91精品福利在线一区二区三区| 99精品国产热久久91蜜凸| 国产在线精品一区二区| 丝袜脚交一区二区| 亚洲综合成人在线| 欧美国产精品久久| 精品国产网站在线观看| 欧美日韩高清影院| 91亚洲大成网污www| 国产精品 日产精品 欧美精品| 日韩高清在线一区| 午夜激情综合网| 一区二区高清在线| 亚洲欧美精品午睡沙发| 欧美高清在线视频| 欧美极品美女视频| 精品国产91洋老外米糕| 日韩一区二区免费高清| 欧美一区二区网站| 欧美高清一级片在线| 欧美另类一区二区三区| 欧美人狂配大交3d怪物一区| 在线视频综合导航| 日本乱人伦aⅴ精品| 91无套直看片红桃| 99精品欧美一区| 91美女片黄在线观看| 日本韩国精品一区二区在线观看| 成人aa视频在线观看| eeuss鲁片一区二区三区在线观看| 国产精品一卡二| 国产激情视频一区二区在线观看| 国产精选一区二区三区| 夫妻av一区二区| av一区二区久久| 91成人在线精品| 欧美日韩国产另类一区| 日韩欧美一区中文| 精品国精品国产尤物美女| 精品成人a区在线观看| 久久亚洲春色中文字幕久久久| 久久精品视频在线看| 国产精品丝袜久久久久久app| 国产精品美日韩| 亚洲午夜激情av| 精久久久久久久久久久| 成人激情开心网| 色狠狠桃花综合| 欧美一区二区三区四区高清| 久久久久久免费网| 亚洲色图都市小说| 男女男精品网站| 成人av免费在线播放| 色播五月激情综合网| 91精品久久久久久久91蜜桃| 久久久久久**毛片大全| 亚洲欧美自拍偷拍| 日日欢夜夜爽一区| 国产精品69毛片高清亚洲| 色丁香久综合在线久综合在线观看| 欧美日韩国产高清一区二区| 精品成人a区在线观看| 亚洲免费观看高清完整版在线观看熊 | 91在线视频网址| 欧美区在线观看| 国产精品三级av| 青青草原综合久久大伊人精品优势 | 精品一区二区三区香蕉蜜桃| jlzzjlzz亚洲女人18| 91麻豆精品国产91久久久久久久久 | 日韩欧美中文一区二区| 国产精品污网站| 久久国产精品无码网站| 91啪亚洲精品| 欧美激情一区不卡| 日本视频在线一区| 色综合激情五月| 中文字幕第一区综合| 久久99国产精品久久99果冻传媒| 色久优优欧美色久优优|