0

さまざまなポリゴン (この場合は三角形) を描画するための基本的なコードがいくつかあります。

#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 を使用して?)、その形状にこのテクスチャを使用する方法を考えています。

これがこれを達成するための良い方法であるかどうか、または他のアドバイスがあるかどうかを誰かがアドバイスできますか? Quartz 2D を使用してオフスクリーン形状を作成し、UIImage として保存することは可能ですか?

4

1 に答える 1

0

純粋な OpenGL ES の方法でこれが必要な場合は、その目的でfreetypeライブラリを使用できます。最初は構築して把握するのが少し難しいかもしれません。しかし、一度慣れれば、純粋な C API を使用して、スケーラブルでアンチエイリアス化されたテキストを任意のデバイスの OpenGL サーフェスに描画できます。

于 2013-11-05T12:06:16.237 に答える