青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

黎明的剔透里伸出了你沁清的曖昧

Graphics|EngineDev|GameDev|2D&3D Art

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  60 隨筆 :: 1 文章 :: 18 評論 :: 0 Trackbacks
iPhone2
最近版本的OpenGL更新以后,所有的固定流水線的功能全部加入到shader里面計算。
兼容模式:最早版本的opengl繪制模式,支持glBegin/glEnd/glVertexPointer/glColorPointer等函數,也支持可編程管線,無顯卡要求。
核心模式:現代3D編程模式,較新,不支持glBegin/glEnd/glVertexPointer/glColorPointer等函數,僅支持可編程管線。
兼容模式Shader 和核心模式的Shader不兼容
1.Shader:
//VertexShader:
1#version 330 core
2
3// Input vertex data, different for all executions of this shader.
4layout(location = 0) in vec3 vertexPosition_modelspace;
5
6void main(){
7    gl_Position.xyz = vertexPosition_modelspace;
8}

9
10

//FragmentShader:
1#version 330 core
2
3// Ouput data
4out vec3 color;
5
6void main(){
7    // Output color = red
8    color = vec3(1,0,0);
9}
 
2.Shader:Data can be passed from a vertex shader to a fragment shader, using output variables in the vertex shader and corresponding input variables in the fragment shader
//VertexShader:
1#version 330
2
3layout (location = 0) in vec4 position;
4layout (location = 1) in vec4 color;
5
6smooth out vec4 theColor;
7
8void main(){
9     gl_Position=position;
10     theColor=color;
11}

//FragmentShader:
1#version 330
2
3smooth in vec4 theColor;
4out vec4 outputColor;
5
6void main(){
7     outputColor=theColor;
8}

9
10
渲染:
1void myDispaly(){
2    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
3    glClear(GL_COLOR_BUFFER_BIT);
4
5    GLuint programID = LoadShaders( "vertpositionColor.vert", "fragmentpc.frag" );
6   
7    GLuint vertexbuffer;
8    glGenBuffers(1, &vertexbuffer);
9    glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);   
10    glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW);
11
12    glUseProgram(programID);
13    glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
14
15    glEnableVertexAttribArray(0);
16    glEnableVertexAttribArray(1);
17  
18    glVertexAttribPointer(0, 4, GL_FLOAT,   GL_FALSE, 0, (void*)0 );      
19    glVertexAttribPointer(1, 4, GL_FLOAT,   GL_FALSE, 0, (void*)48 );      
20 
21    glDrawArrays(GL_TRIANGLES, 0, 3); // Starting from vertex 0; 3 vertices total -> 1 triangle
22
23    glDisableVertexAttribArray(0);
24    glDisableVertexAttribArray(1);
25  
26    glutSwapBuffers();
27    glUseProgram(0);
28    glDeleteBuffers(1, &vertexbuffer);
29}

30

3.Shader:移動
如果不用內置函數來操作,那么可以用shader來實現,首先要計算出物體移動的x y z坐標,然后通過vertex shader來傳遞:
//vertex shader
1#version 330 core
2
3layout (location = 0) in vec4 position;
4
5uniform vec2 offset;
6
7void main(){
8     vec4 totaloffset=vec4(offset.x,offset.y,0,0);
9     gl_Position=position+totaloffset;
10}
uniform變量操作:
1offsetLocation=glGetUniformLocation(programID,"offset");

1 glUniform2f(offsetLocation,fXOffset,fYOffset);
 
4.Shader:透視投影
//vertex shader
1#version 330 core
2
3layout (location = 0) in vec4 position;
4layout (location = 1) in vec4 Color;
5
6smooth out vec4 theColor;
7
8uniform vec2 offset;
9uniform float zNear;
10uniform float zFar;
11uniform float frustumScale;
12
13void main(){
14     vec4 cameraPos=position+vec4(offset.x, offset.y, 0, 0);
15     vec4 clipPos;
16
17     clipPos.xy=cameraPos.xy*frustumScale;
18
19     clipPos.z=cameraPos.z*(zNear + zFar)/(zNear - zFar);
20     clipPos.z+=2*zNear*zFar/(zNear - zFar);
21 
22     clipPos.w = -cameraPos.z;
23    
24     gl_Position=clipPos;
25     theColor=Color;
26
27}
5.Shader 透視投影版本1
//vertex shader

1#version 330
2
3layout(location = 0) in vec4 position;
4layout(location = 1) in vec4 color;
5
6smooth out vec4 theColor;
7
8uniform vec2 offset;
9uniform mat4 perspectiveMatrix;
10
11void main()
12{
13    vec4 cameraPos = position + vec4(offset.x, offset.y, 0.0, 0.0);
14   
15    gl_Position = perspectiveMatrix * cameraPos;
16    theColor = color;
17}
變量傳值:
1offsetUniform = glGetUniformLocation(theProgram, "offset");
2
3perspectiveMatrixUnif = glGetUniformLocation(theProgram, "perspectiveMatrix");
4
5float fFrustumScale = 1.0f; float fzNear = 0.5f; float fzFar = 3.0f;
6
7float theMatrix[16];
8memset(theMatrix, 0, sizeof(float) * 16);
9
10theMatrix[0] = fFrustumScale;
11theMatrix[5] = fFrustumScale;
12theMatrix[10] = (fzFar + fzNear) / (fzNear - fzFar);
13theMatrix[14] = (2 * fzFar * fzNear) / (fzNear - fzFar);
14theMatrix[11] = -1.0f;
15
16glUseProgram(theProgram);
17glUniformMatrix4fv(perspectiveMatrixUnif, 1, GL_FALSE, theMatrix);
18glUseProgram(0);
posted on 2012-02-21 17:41 情絕格調(fresmaster) 閱讀(646) 評論(0)  編輯 收藏 引用 所屬分類: Graphics
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            尤物九九久久国产精品的分类| 国产精品欧美在线| 久久成年人视频| 亚洲一区视频在线| 亚洲天堂网站在线观看视频| 激情成人综合网| 激情久久久久久| 精品成人国产| 性久久久久久久久| 欧美与黑人午夜性猛交久久久| 亚洲国产导航| 在线免费观看视频一区| 一区二区三区中文在线观看| 国产亚洲精品激情久久| 国产综合色精品一区二区三区| 国产亚洲电影| 在线免费观看成人网| 亚洲精品在线一区二区| 亚洲先锋成人| 久久久最新网址| 欧美sm视频| 99re66热这里只有精品3直播| 一本久久知道综合久久| 一区二区高清视频| 一区二区三区自拍| 国产日产欧美精品| 国产伦精品一区二区三区在线观看| 欧美乱在线观看| 国产精品日韩久久久久| 黄色精品一区| 亚洲精品网站在线播放gif| 亚洲视频一区二区在线观看| 久久久久九九九| 亚洲精品激情| 在线视频精品| 久久久综合网| 国产精品va在线播放| 欧美日韩亚洲综合一区| 欧美久久一区| 欧美另类人妖| 日韩午夜三级在线| 一本色道久久综合亚洲精品不卡| 欧美日韩三级| 一本一道久久综合狠狠老精东影业| 欧美有码在线视频| 噜噜噜噜噜久久久久久91| 女仆av观看一区| 亚洲美女黄网| 亚洲欧美日韩中文视频| 久久精品噜噜噜成人av农村| 欧美激情2020午夜免费观看| 欧美激情综合五月色丁香小说| 欧美日韩在线一二三| 亚洲成色www久久网站| 午夜精品一区二区三区在线播放 | 精久久久久久| 亚洲欧美日韩在线不卡| 91久久精品国产91性色| 久久久噜噜噜久久| 在线欧美视频| 你懂的亚洲视频| 午夜精品福利一区二区蜜股av| 欧美日本韩国| 亚洲美女av网站| 亚洲日韩欧美视频| 欧美精品久久一区二区| 有码中文亚洲精品| 欧美日韩国产色视频| 中日韩午夜理伦电影免费| 91久久精品一区| 欧美成人午夜激情在线| 亚洲国产一区视频| 欧美激情在线| 欧美激情一区二区| 在线不卡视频| 亚洲经典一区| 国产精品久久久久久久久久免费看| 最新国产拍偷乱拍精品 | 正在播放亚洲| 中日韩在线视频| 国产欧美欧洲在线观看| 久久青青草原一区二区| 蜜臀av性久久久久蜜臀aⅴ| 亚洲欧洲在线播放| 夜夜嗨av一区二区三区网页| 国产精品午夜国产小视频| 久久精品国产成人| 狂野欧美性猛交xxxx巴西| 一本色道久久99精品综合 | 久久国产精品一区二区三区四区 | 噜噜爱69成人精品| 一区二区三区三区在线| 一区二区三区日韩精品| 亚洲美女中出| 亚洲美女性视频| 国产精品欧美久久久久无广告| 性欧美暴力猛交另类hd| 久久久亚洲高清| 亚洲视频在线看| 小处雏高清一区二区三区| 亚洲美女91| 香港成人在线视频| 99热在这里有精品免费| 欧美一区久久| 亚洲一区二区av电影| 久久天堂av综合合色| 亚洲欧美日韩国产中文| 欧美激情第1页| 开元免费观看欧美电视剧网站| 欧美三级午夜理伦三级中文幕 | 亚洲最新色图| 免费高清在线一区| 久久精品国产亚洲一区二区三区| 欧美精品久久久久久久久久| 鲁大师成人一区二区三区| 国产精品视频免费在线观看| 亚洲精品黄色| 亚洲人成在线观看网站高清| 久久国产福利| 午夜精品一区二区三区在线| 国产精品二区三区四区| 亚洲精品欧洲精品| 欧美日韩一卡二卡| 亚洲美女尤物影院| 欧美福利在线| 欧美jizzhd精品欧美巨大免费| 欧美视频在线免费看| 亚洲人精品午夜在线观看| 韩国在线视频一区| 亚洲欧美国产不卡| 国产精品99久久99久久久二8| 欧美一级理论片| 亚洲欧美另类国产| 亚洲一区日韩在线| 久久免费视频在线观看| 欧美在线观看网址综合| 国产精品久久久久天堂| 亚洲视频日本| 亚洲小视频在线观看| 欧美视频在线不卡| 亚洲欧洲一区二区天堂久久| 亚洲国产一区在线观看| 免费成人高清在线视频| 欧美黄网免费在线观看| 亚洲高清视频的网址| 久久国产精品免费一区| 国产农村妇女精品一二区| 亚洲资源在线观看| 午夜影院日韩| 国产欧美高清| 午夜亚洲性色视频| 久久久久久久尹人综合网亚洲| 国产精品夜色7777狼人| 欧美在线视频观看免费网站| 久久字幕精品一区| 免费在线观看成人av| 欧美久久一区| 一级成人国产| 国产精品你懂的| 欧美一区三区三区高中清蜜桃| 久久精品123| 1024亚洲| 国产精品另类一区| 亚洲欧美日韩中文播放| 国产亚洲午夜高清国产拍精品| 久久久亚洲精品一区二区三区| 国产午夜精品视频| 久热国产精品| 亚洲免费一级电影| 欧美freesex交免费视频| 亚洲精品视频一区二区三区| 欧美网站在线| 国产精品日本一区二区| 午夜免费在线观看精品视频| 久久精品一本久久99精品| 亚洲福利在线视频| 欧美jizz19hd性欧美| 欧美激情亚洲精品| 香蕉成人啪国产精品视频综合网| 在线视频观看日韩| 欧美性色综合| 毛片基地黄久久久久久天堂| 亚洲一级片在线看| 亚洲欧洲一区| 国产亚洲激情在线| 亚洲国产免费看| 先锋影音久久久| 91久久精品国产91久久性色tv| 国产精品久99| 国模 一区 二区 三区| 欧美日韩精品一区| 美女视频一区免费观看| 欧美一区二区三区精品| 这里只有精品丝袜| 亚洲精品乱码久久久久久久久| 久热成人在线视频| 久久精品日韩一区二区三区| 亚洲欧美区自拍先锋| 一区二区三区四区五区在线| 亚洲日本中文字幕区|