FBO 渲染到紋理

2021-06-18 17:56:58 字數 2919 閱讀 9238

這是書中第八章的最後一節內容,在我機制的簡化問題後,寫出了想要的效果.應用fbo渲染到紋理,可以直接用.這個用來實現鏡面效果什麼的,好啊.再乙個,貌似我現在已經可以去寫延遲渲染流水線了,那個用到多渲染目標,之後再處理.呼,繼續學習吧,這些東西還真得實踐才行啊.

//	rendertotexture.cpp -- 2013/10/11-20:49

#include "stdafx.h"

#include #include #include #define freeglut_static

#include glbatch ********batch;

glbatch textured********batch ;

glshadermanager shadermanager;

glint ********shader ;

glint textured********shader ;

gluint fboname ;

gluint generatedtexutre ;

glenum windowbuffer = ;

glenum fbobuffers = ;

glsizei const generatedtexturewidth = 400 ;

glsizei const generatedtextureheight = 300 ;

glint screenwidth = 800 ;

glint screenheight = 600 ;

void shutdownrc(void)

void changesize(int w, int h)

void setuprc()

; glfloat vtexcoords = ;

********batch.begin(gl_********s, 3);

********batch.copyvertexdata3f(vverts);

********batch.end();

textured********batch.begin(gl_********s, 3, 1) ;

textured********batch.copyvertexdata3f(vverts) ;

textured********batch.copytexcoorddata2f(vtexcoords, 0) ;

textured********batch.end();

glgenframebuffers(1, &fboname) ;

glbindframebuffer(gl_draw_framebuffer, fboname) ;

glgentextures(1, &generatedtexutre) ;

glbindtexture(gl_texture_2d, generatedtexutre) ;

gltexparameterf(gl_texture_2d, gl_texture_mag_filter, gl_linear);

gltexparameterf(gl_texture_2d, gl_texture_min_filter, gl_linear_mipmap_linear);

gltexparameterf(gl_texture_2d, gl_texture_wrap_s, gl_clamp_to_edge);

gltexparameterf(gl_texture_2d, gl_texture_wrap_t, gl_clamp_to_edge);

gltexparameteri(gl_texture_2d, gl_generate_mipmap, gl_true);

glgeneratemipmap(gl_texture_2d);

glteximage2d(gl_texture_2d, 0, gl_rgba8, generatedtexturewidth, generatedtextureheight, 0, gl_rgba, gl_unsigned_byte, 0);

glbindtexture(gl_texture_2d, 0);

glframebuffertexture2d(gl_draw_framebuffer, gl_color_attachment0, gl_texture_2d, generatedtexutre, 0) ;

glbindframebuffer(gl_draw_framebuffer, 0) ;

}void renderscene(void)

; gluniform4fv(icolorlocation, 1, vcolor) ;

********batch.draw();

// 再以白底將剛生成的紋理貼到三角形上畫出來,漢字好難組織說啊...

glclearcolor(1.0f, 1.0f, 1.0f, 1.0f);

glbindframebuffer(gl_draw_framebuffer, 0) ;

gldrawbuffers(1, windowbuffer) ;

glviewport(0, 0, screenwidth, screenheight) ;

gluseprogram(textured********shader) ;

glbindtexture(gl_texture_2d, generatedtexutre) ;

glint itextureuniform = glgetuniformlocation(textured********shader, "colormap") ;

gluniform1i(itextureuniform, 0) ;

textured********batch.draw() ;

glutswapbuffers();

}int main(int argc, char* argv)

setuprc();

glutmainloop();

return 0;

}

Opengl中的FBO渲染到紋理

渲染到紋理用途 遊戲中水的倒影,汽車的反光鏡,gpgpu必備。實現參見紅皮書的 至於ogre中的渲染到紋理可以參考翻譯文件第八章 ogre渲染目標 渲染到紋理 技術,本質上來說就是一次對場景中幾何體的渲染過程。它本身要花費一些執行時間,進而導致幀速的下降。當你渲染複雜耗時的內容的時候,你不得不考慮相...

DirectX 渲染到紋理

熟悉dx的兄弟們都知道什麼叫紋理了,這裡簡單介紹一下,先看看現實生活中的例子吧,其實紋理的例子比比皆是,比如地板,牆面都是紋理。在圖形學中,紋理主要是為了增強場景的真實感,比如你想繪製乙個地面,簡單一點可以直接使用乙個矩形,稍微複雜一點可以用三角形網格,再複雜一點可以使用地面紋理,有了紋理以後真實感...

ogre渲染到動態紋理

材質指令碼 material screen texture unit bluescreen.jpg必須是blank white的影象,因為多重紋理混合預設是modulate。texture screen就是在程式裡面動態建立的二維影象。ogre textureptr screentex ogre t...