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

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

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

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  60 隨筆 :: 1 文章 :: 18 評論 :: 0 Trackbacks
iPhone2
最近版本的OpenGL更新以后,所有的固定流水線的功能全部加入到shader里面計(jì)算。
兼容模式:最早版本的opengl繪制模式,支持glBegin/glEnd/glVertexPointer/glColorPointer等函數(shù),也支持可編程管線,無顯卡要求。
核心模式:現(xiàn)代3D編程模式,較新,不支持glBegin/glEnd/glVertexPointer/glColorPointer等函數(shù),僅支持可編程管線。
兼容模式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:移動(dòng)
如果不用內(nèi)置函數(shù)來操作,那么可以用shader來實(shí)現(xiàn),首先要計(jì)算出物體移動(dòng)的x y z坐標(biāo),然后通過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 情絕格調(diào)(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>
            免费在线欧美视频| 欧美日韩成人一区二区三区| 久久精品中文字幕一区| 亚洲一区二区在线视频| 欧美日本在线视频| 欧美成人精品影院| 欧美激情一区二区三区成人| 欧美精品免费视频| 欧美视频在线看| 国产精品伦子伦免费视频| 国产精品人成在线观看免费| 国产一区二区在线免费观看| 国产一区二区三区黄视频| 亚洲国产精品999| 亚洲精品欧美一区二区三区| 在线亚洲电影| 久久久国产精品一区二区中文| 欧美chengren| 99av国产精品欲麻豆| 午夜精品久久久久久| 久久久久久久97| 欧美三级视频在线| 欧美日韩专区| 亚洲第一综合天堂另类专| 一本色道久久88综合日韩精品 | 免费人成网站在线观看欧美高清 | 最新国产成人av网站网址麻豆| 免费欧美网站| 亚洲午夜精品久久| 欧美aaa级| 亚洲一区二区三区777| 久久婷婷国产综合精品青草| 亚洲精品乱码久久久久| 久久精品亚洲一区二区三区浴池| 欧美日韩国语| 亚洲国产精品久久久久婷婷老年 | 亚洲精品久久久久久久久久久久久| 亚洲与欧洲av电影| 欧美大片在线观看一区二区| 国产日韩一区欧美| 亚洲视频精品在线| 亚洲高清不卡在线| 久久疯狂做爰流白浆xx| 国产精品v亚洲精品v日韩精品 | 久久成人一区| 一区二区三区波多野结衣在线观看| 久久久精品五月天| 国产精品区一区二区三区| 日韩午夜精品| 欧美成人精品一区二区三区| 欧美一区二区黄色| 欧美日韩一级视频| 日韩视频免费看| 亚洲激情在线观看| 美女脱光内衣内裤视频久久网站| 国产色综合久久| 午夜精品成人在线| 正在播放日韩| 国产精品国产三级国产aⅴ9色| 亚洲六月丁香色婷婷综合久久| 裸体女人亚洲精品一区| 久久精品动漫| 国产欧美日韩亚洲精品| 午夜精品视频网站| 亚洲视频你懂的| 国产精品日韩欧美一区二区三区| 午夜视频在线观看一区| 亚洲一区中文| 国产乱码精品一区二区三区忘忧草 | 国产精品国产精品| 午夜久久一区| 亚洲影院色无极综合| 国产精品尤物福利片在线观看| 午夜精品久久久久久久久久久久久 | 亚洲一区二区在线视频| 亚洲欧美春色| 免费亚洲电影在线| 久久免费精品日本久久中文字幕| 亚洲欧洲免费视频| 亚洲精品一区二区网址| 欧美日韩综合久久| 欧美中文字幕不卡| 久久久国产亚洲精品| 亚洲国产精品一区二区尤物区| 亚洲国产成人在线视频| 欧美午夜精品久久久久免费视| 午夜视频久久久久久| 久久人人97超碰国产公开结果| 亚洲日本一区二区三区| 99视频精品免费观看| 日韩视频一区二区三区| 国产欧美一区二区在线观看| 久久婷婷麻豆| 欧美日韩国产成人在线免费| 小黄鸭精品aⅴ导航网站入口| 欧美在线一二三四区| 亚洲欧洲精品一区二区三区波多野1战4 | 欧美视频在线观看一区二区| 亚洲欧美日韩爽爽影院| 久久九九免费视频| 一本色道久久| 久久久久久久久久看片| 亚洲视频欧洲视频| 久久精品夜夜夜夜久久| 日韩视频免费观看高清在线视频| 午夜精品999| 99在线热播精品免费99热| 欧美中文在线视频| 一区二区三区欧美视频| 久久婷婷国产综合国色天香| 亚洲一区亚洲| 女人天堂亚洲aⅴ在线观看| 香蕉国产精品偷在线观看不卡| 欧美+日本+国产+在线a∨观看| 久久精品国产99| 国产精品美女午夜av| 亚洲精品欧美极品| 亚洲人成人77777线观看| 欧美在线视频日韩| 欧美在线在线| 国产精品午夜春色av| 日韩小视频在线观看专区| 在线观看日韩一区| 久久精品国产视频| 久久久久久久久久久一区| 国产精品久久久久久久久果冻传媒 | 亚洲欧美激情在线视频| 一区二区日韩伦理片| 欧美刺激性大交免费视频 | 久久综合国产精品| 国产欧美日韩精品专区| 亚洲一区二区伦理| 亚洲综合欧美日韩| 欧美亚洲成人精品| 亚洲少妇自拍| 亚洲欧美韩国| 国产精品天天看| 亚洲欧美国产77777| 香蕉久久夜色精品国产使用方法| 国产精品国产三级国产专播精品人 | 中文国产成人精品久久一| 欧美激情亚洲自拍| 日韩一级黄色片| 国产精品va| 一区二区三区 在线观看视频| 亚洲一区图片| 国产午夜精品麻豆| 欧美中文字幕在线视频| 每日更新成人在线视频| 怡红院av一区二区三区| 免费成人毛片| 亚洲人精品午夜在线观看| 一区二区av在线| 国产精品久久久亚洲一区 | 国产精品伦子伦免费视频| 亚洲欧美日韩在线高清直播| 久久久精品2019中文字幕神马| 国内久久精品视频| 久久亚洲一区二区| 亚洲日本一区二区| 亚洲欧美经典视频| 国产在线日韩| 欧美激情亚洲一区| 亚洲欧美国产三级| 欧美粗暴jizz性欧美20| 一区二区三区久久精品| 国产日韩一区二区| 蜜桃久久av一区| 亚洲午夜在线观看| 乱码第一页成人| 亚洲一区二区在线播放| 国产自产2019最新不卡| 欧美激情国产日韩精品一区18| 亚洲网址在线| 欧美电影在线观看完整版| 亚洲午夜91| 红桃av永久久久| 国产精品99免费看 | 久久久久一区二区| 一区二区高清视频| 老司机免费视频久久| 日韩午夜av在线| 狠久久av成人天堂| 国产精品拍天天在线| 男人插女人欧美| 欧美中文在线视频| 亚洲午夜国产成人av电影男同| 久久深夜福利免费观看| 亚洲自拍偷拍麻豆| 亚洲日本无吗高清不卡| 国内精品嫩模av私拍在线观看 | 亚洲欧美经典视频| 91久久精品日日躁夜夜躁欧美 | 亚洲欧美日本视频在线观看| 91久久中文字幕| 蜜臀a∨国产成人精品| 欧美在线视频观看免费网站| 亚洲无限av看| 亚洲视频精品在线| 夜夜嗨av一区二区三区免费区|