第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

像素空間中的OpenGL紋理坐標

像素空間中的OpenGL紋理坐標

一只甜甜圈 2019-08-13 14:03:44
像素空間中的OpenGL紋理坐標我正在開發(fā)一款使用OpenGL ES 2進行繪圖的iPhone應用程序。我知道通常紋理坐標是在0-1范圍內定義的,但理想情況下我想將它們從0-1023(我的TextureAtlas的大小)映射出來以便于閱讀。我已經看到了以這種方式定義坐標的示例代碼,但是無法確定以前允許這樣做的調用。glMatrixMode(GL_TEXTURE)好像它可能涉及,但我不太確定如何實現它。我的最終目標是完成這樣的事情,我在地圖集中使用的紋理位于左上角48px的正方形中:GLshort texcoords[]={   48,48,   0,48,   48,0,   0,0,};glVertexAttribPointer(ATTRIB_TEXTUREPOSITON, 2, GL_SHORT, 0, 0, texcoords);glEnableVertexAttribArray(ATTRIB_TEXTUREPOSITON);
查看完整描述

3 回答

?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

這已被問了好幾次,但我手邊沒有鏈接,所以快速而粗略的解釋。假設紋理寬度為8像素:


 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |

 ^   ^   ^   ^   ^   ^   ^   ^   ^

0.0  |   |   |   |   |   |   |  1.0

 |   |   |   |   |   |   |   |   |

0/8 1/8 2/8 3/8 4/8 5/8 6/8 7/8 8/8

數字表示紋理的像素,條紋表示紋理的邊緣,并且在最近的情況下過濾像素之間的邊界。但是你想要點擊像素的中心。所以你對紋理坐標感興趣


(0/8 + 1/8)/ 2 = 1 /(2 * 8)


(1/8 + 2/8)/ 2 = 3 /(2 * 8)


...


(7/8 + 8/8)/ 2 = 15 /(2 * 8)


或者更一般地,對于N寬紋理中的像素i,適當的紋理坐標是


(2i + 1)/(2N)


但是,如果要將紋理與屏幕像素完美對齊,請記住,您指定為坐標的不是四邊形像素,而是邊緣,根據投影可能與屏幕像素邊緣對齊,而不是中心,因此可能需要其他紋理坐標。


查看完整回答
反對 回復 2019-08-13
?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

事實證明這在OpenGl ES 2中是可行的。以下是我完成它的方法:

片段著色器:

precision mediump float; varying vec2 v_texCoord;uniform sampler2D textureSample;uniform float texScale;void main(){
    vec2 mult=(2.0*v_texCoord - 1.0)/(2.0*texScale);
    gl_FragColor = texture2D(textureSample,mult);}

OBJ-C:

GLshort texCoords[]={
    512,512,
    0,512,
    512,0,
    0,0,};GLfloat textureWidth = 512.0; //texture size, assumed square, power of 2texCoordLoc = glGetAttribLocation ( program, "a_texCoord");GLuint textureScale = glGetUniformLocation ( program, "texScale");glUniform1f(textureScale, textureWidth);glVertexAttribPointer ( texCoordLoc, 2, GL_SHORT, GL_FALSE, 0, texCoords);

如果有人對如何在性能方面發(fā)揮作用發(fā)表評論,我會感興趣。


查看完整回答
反對 回復 2019-08-13
  • 3 回答
  • 0 關注
  • 970 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號