将文本添加到 2D OpenGL ES 2.0 对象 - GLKit - iOS.



我有一些基本的代码来绘制各种多边形(在本例中为三角形):

#import "Triangle.h"
@interface Triangle() {
    GLKBaseEffect * effect;
    NSMutableData *vertexData;
    int numVertices;
}
@property (nonatomic, strong) GLKBaseEffect * effect;
@property (nonatomic, assign) int numVertices;
@property (nonatomic, assign) GLKVector2 *vertices;
@end
@implementation Triangle
@synthesize effect;
@synthesize numVertices;
@synthesize vertices;
- (id)initWithEffect : (GLKBaseEffect *)effectPassed {
    self.effect = effectPassed;
    self.numVertices = 3;
    self.vertices[0] = GLKVector2Make(0,0);
    self.vertices[1] = GLKVector2Make(500, 0);
    self.vertices[2] = GLKVector2Make(500, 500);
    return self;
}
- (GLKVector2 *)vertices {
    if (vertexData == nil)
        vertexData = [NSMutableData dataWithLength:sizeof(GLKVector2)*self.numVertices];
    return [vertexData mutableBytes];
}
-(void)render {
    effect.useConstantColor = YES;
    effect.constantColor = GLKVector4Make(1.0, 0.0, 0.1, 1.0);
    [self.effect prepareToDraw];
    glEnableVertexAttribArray(GLKVertexAttribPosition);
    glVertexAttribPointer(GLKVertexAttribPosition, 2, GL_FLOAT, GL_FALSE, 0, self.vertices);
    glDrawArrays(GL_TRIANGLE_FAN, 0, self.numVertices);
    glDisableVertexAttribArray(GLKVertexAttribPosition);
}
@end

我想做的是以某种方式在形状内放置一些文本。我正在考虑创建相同形状的纹理(也许使用石英?),然后在形状上使用这种纹理。

有人能建议这是否是实现这一目标的好方法,或任何其他建议?是否可以使用 Quartz 2D 创建屏幕外形状,然后另存为 UIImage ?

如果你想以纯粹的OpenGL ES方式做到这一点,你可以使用freetype库来实现这个目的。一开始构建和掌握可能有点困难。但是一旦你熟悉了它,你就可以使用它的纯 C API 在任何设备上将可扩展和反化的文本绘制到 OpenGL 表面。

最新更新