我正在研究字體生成解決方案並面臨紋理問題。我動態創建紋理圖集,然後用紋理座標映射每個字母。將紋理座標匹配到原始大小
這裏的映射「T」字母的結果:(生成的紋理是在上面,什麼我畫是對底部)
這似乎是問題是原始和紋理區域的該尺寸不匹配這就是爲什麼openGL試圖調整它的大小。我加載時,兩個閔和MAG使用GL_NEAREST /渲染質感
這裏的渲染代碼:
glBegin(GL_TRIANGLE_STRIP);
float twidth = 7.f/512.f;
float theight = 11.f/512.f;
float width = 7.f;
float height = 11.f;
float w = width/2.f;
float h = height/2.f;
float x = 100;
float y = 100;
float tx = 135.f/512.f;
float ty = 0;
glTexCoord2f(tx, ty);
glVertex2f(x - w, y-h);
glTexCoord2f(tx + twidth, ty);
glVertex2f(x + w, y-h);
glTexCoord2f(tx, ty + theight);
glVertex2f(x - w, y+h);
glTexCoord2f(tx + twidth, ty + theight);
glVertex2f(x + w, y+h);
glEnd();
這裏的初始化代碼:
glViewport(0,0,width,height);
glDisable(GL_LIGHTING);
glDisable(GL_DEPTH_TEST);
// Set up the GL state.
glClearColor(1, 1, 1, 1);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
//glDisable(GL_BLEND);
glEnable(GL_BLEND);
glEnable(GL_TEXTURE_2D);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, width, height, 0, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
紋理加載代碼:
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
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, 512, 512,
0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, &texBinary[0]);
你能澄清問題是什麼嗎?我不確定我應該從這個圖像中拿走什麼。 – Tim
只看圖像底部的't'字母和頂部的't'字母 –