Добавление текста в 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?), А затем использовать эту текстуру на фигуре.
Кто-нибудь сможет посоветовать, если это хороший способ достижения этого, или любой другой совет? Можно ли использовать Quartz 2D для создания внеэкранной формы, чтобы затем сохранить ее как UIImage?
1 ответ
Если вы хотите сделать это с помощью OpenGL ES, вы можете использовать библиотеку freetype для этой цели. Это может быть немного сложно построить и понять в начале. Но как только вы знакомы с ним, вы можете использовать его чистый C API для рисования масштабируемого и сглаженного текста на поверхности OpenGL на любом устройстве.