Хорошо,
Я пытаюсь сэкономить время на создании общих классов для рисования объектов в трехмерном пространстве.
Я создал класс Object3D со свойствами x, y и z.
thumbnail3D - это «сын» Object3D, использующий наследование. Vertex3D - это структура с GLfloat для каждой координаты.
Проблема в том, когда я пытаюсь скомпилировать метод initWithPosition :( Vertex3D *) vertex, и ошибка:
Запрос на член 'x' в чем-то, что не является структурой или объединением.
Запрос на член 'y' во что-то не структура или объединение.
Запрос на член 'z' во что-то, не являющееся структурой или объединением.
Но, структура находится на импорте ...
#import <UIKit/UIKit.h>
#import <OpenGLES/ES2/gl.h>
@interface Object3D : NSObject
{
GLfloat x;
GLfloat y;
GLfloat z;
}
@property GLfloat x;
@property GLfloat y;
@property GLfloat z;
-(void) render;
@end
Визуализация все еще жестко закодирована
#import "Thumbnail3D.h"
#import "ConstantsAndMacros.h"
#import "OpenGLCommon.h"
@implementation Thumbnail3D
@synthesize width;
@synthesize height;
-(void)render
{
Triangle3D triangle[2];
triangle[0].v1 = Vertex3DMake(0.0, 1.0, -3.0);
triangle[0].v2 = Vertex3DMake(1.0, 0.0, -3.0);
triangle[0].v3 = Vertex3DMake(-1.0, 0.0, -3.0);
triangle[1].v1 = Vertex3DMake(-1.0, 0.0, -3.0);
triangle[1].v2 = Vertex3DMake(1.0, 0.0, -3.0);
triangle[1].v3 = Vertex3DMake(0.0, -1.0, -3.0);
glLoadIdentity();
glClearColor(0.7, 0.7, 0.7, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnableClientState(GL_VERTEX_ARRAY);
glColor4f(1.0, 0.0, 0.0, 1.0);
glVertexPointer(3, GL_FLOAT, 0, &triangle);
glDrawArrays(GL_TRIANGLES, 0, 18);
glDisableClientState(GL_VERTEX_ARRAY);
}
-(void)initWithPosition:(Vertex3D *)vertex
{
x = vertex.x;
y = vertex.y;
z = vertex.z;
}
@end