Ios iPhone上的OpenGL:ES-纹理2D大小和显示问题

Ios iPhone上的OpenGL:ES-纹理2D大小和显示问题,ios,opengl-es,texture2d,text-rendering,Ios,Opengl Es,Texture2d,Text Rendering,我对Texture2D有问题,我想了解如何更好地使用它 我从XCode 4中获取了Crashlander Texture2D类和一个默认的OpenGL项目,强制它加载OpenGL ES1.1 首先是一个概念问题。Texture2D init方法上的大小显然是OpenGL大小,但fontSize参数与OpenGL世界有什么关系 第二,调试。我从下面的代码中得到的结果是一个黑色(或我在glColor中设置的任何颜色)正方形,文本应该在那里 以下是我在代码中所做的更改: - (void)awakeFr

我对Texture2D有问题,我想了解如何更好地使用它

我从XCode 4中获取了Crashlander Texture2D类和一个默认的OpenGL项目,强制它加载OpenGL ES1.1

首先是一个概念问题。Texture2D init方法上的大小显然是OpenGL大小,但fontSize参数与OpenGL世界有什么关系

第二,调试。我从下面的代码中得到的结果是一个黑色(或我在glColor中设置的任何颜色)正方形,文本应该在那里

以下是我在代码中所做的更改:

- (void)awakeFromNib
{
    EAGLContext *aContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];

    if (!aContext) {
        aContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];
    }

    self.labelAtTheTop = [[[Texture2D alloc] initWithString:@"Some Text" dimensions:CGSizeMake(1, 1) alignment:UITextAlignmentLeft fontName:@"Helvetica" fontSize:14.0f] autorelease];

    if (!aContext)
        NSLog(@"Failed to create ES context");
    else if (![EAGLContext setCurrentContext:aContext])
        NSLog(@"Failed to set ES context current");

    self.context = aContext;
    [aContext release];

    [(EAGLView *)self.view setContext:context];
    [(EAGLView *)self.view setFramebuffer];

    animating = FALSE;
    animationFrameInterval = 1;
    self.displayLink = nil;
}

- (void)drawFrame
{
    [(EAGLView *)self.view setFramebuffer];

    // Replace the implementation of this method to do your own custom drawing.

    glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    glEnableClientState(GL_VERTEX_ARRAY);
    glEnable(GL_TEXTURE_2D);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
    glPushMatrix();
    glLoadIdentity();
    [self.labelAtTheTop drawAtPoint:CGPointMake(0, 0)];
    glPopMatrix();
    glDisable(GL_COLOR_MATERIAL);
    // Disable modes so they don't interfere with other parts of the program
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    glDisableClientState(GL_VERTEX_ARRAY);
    glDisable(GL_TEXTURE_2D);
    glDisable(GL_BLEND);                


    [(EAGLView *)self.view presentFramebuffer];


}

Crashlander实际上是一个古老的代码库,所以我建议避免使用它。iPhone有一个非常好的2D引擎,叫做Cocos2D。关于代码,请尝试注释
glDisable(GL\u COLOR\u MATERIAL)
glColor4f(0,0,0,1)实际上代表黑色,请尝试对此进行注释。我认为fontSize是屏幕点的字体大小

[编辑]

如果你想学习一些关于OpenGLES的知识,这里有一个很好的入门教程
Crashlander实际上是一个古老的代码库,因此我建议避免使用它。iPhone有一个非常好的2D引擎,叫做Cocos2D。关于代码,请尝试注释
glDisable(GL\u COLOR\u MATERIAL)
glColor4f(0,0,0,1)实际上代表黑色,请尝试对此进行注释。我认为fontSize是屏幕点的字体大小

[编辑]

如果你想学习一些关于OpenGLES的知识,这里有一个很好的入门教程