0
저는 OpenGL의 초보자이며 OpenGL에서 SDL_TTF를 사용하여 텍스트를 작성하는 함수를 만들었습니다.SDL_TTF를 사용하는 OpenGL의 텍스트
#define WINDOW_WIDTH 832
#define WINDOW_HEIGHT 487
#define glVertex2px(x,y) glVertex2d((double)(x) * 2.0/(double)WINDOW_WIDTH - 1.0, 1.0 - (double)(y) * 2.0/(double)WINDOW_HEIGHT);
void glWriteText2d(TTF_Font *font,const char *text,SDL_Color color,const int x,const int y){
GLuint texture;
SDL_Surface *surface;
surface = TTF_RenderText_Blended(font,text,color);
glGenTextures(1,&texture);
glBindTexture(GL_TEXTURE_2D,texture);
gluBuild2DMipmaps(GL_TEXTURE_2D,4,surface->w,surface->h,GL_RGBA,GL_UNSIGNED_BYTE,surface->pixels);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
GLboolean textureIsEnabled = glIsEnabled(GL_TEXTURE_2D);
glEnable(GL_TEXTURE_2D);
glColor3ub(255,255,255);
glBegin(GL_QUADS);
glTexCoord2f(0,0);
glVertex2px(x,y);
glTexCoord2f(0,1);
glVertex2px(x,y + surface->h);
glTexCoord2f(1,1);
glVertex2px(x + surface->w,y + surface->h);
glTexCoord2f(1,0);
glVertex2px(x + surface->w,y);
glEnd();
if(!textureIsEnabled){
glDisable(GL_TEXTURE_2D);
}
}
내가 그것을 사용할 때, 그것은 텍스트가 있어야하는 장소에서 color
의 색상 사각형을 그립니다 때문에이 기능은 작동하지 않습니다 여기 내 함수에 대한 코드입니다. 작동하도록 코드에서 무엇을 변경해야합니까?
미안하지만, 현재 시도하고있는 것을 만들기 전에 OpenGL에 대해 먼저 배워야한다고 생각합니다. 우선 OpenGL은 텍스트 기능을 포함하지 않으며 현대 OpenGL도 아닙니다. 또한 고정 기능 파이프 라인으로이 오래된 OpenGL 1.1을 사용하지 않아야합니다. 그것은 완전히 더 이상 사용되지 않습니다. 그리고 전에 glVertex2px를 보지 못했습니다. 또한 그것에 대해 뭔가를 찾을 수 없습니다. 마지막으로 더 이상의 정보없이이 상황에서 잘못된 점을 말하기는 어렵습니다. 어쩌면 Modelview/Projection 행렬을 잘못 설정하여 전체의 작은 부분 만 볼 수 있습니까? – Michael
@Michael'glVertex2px'에 대해서, SDL에서와 같이 윈도우의 왼쪽 상단에있는 픽셀 수를 사용하여 물건을 그리는 매크로입니다. 2D에서는 좀 더 실용적입니다. 그 정의를 코드에 포함하는 것을 잊어 버렸지 만 그것을 바로 잡기 위해 편집했습니다. –