RSS

(root)/iphone/common : 51 : tappity/source/TappityView.m

To get this branch, use:
bzr branch /browse/iphone/common

« back to all changes in this revision

Viewing changes to tappity/source/TappityView.m

Dömötör Gulyás
2009-10-30 18:16:49
Revision ID: dognotdog@gmail.com-20091030171649-ekeuirylrnbck5sg
switches tappity client to do drawing via GLES

Show diffs side-by-side

added added

removed removed

9
9
#import "TappityView.h"
10
10
#import "TappityClient.h"
11
11
#import "Tappity.h"
 
12
#import "ES2Shader.h"
 
13
#import "VertexArray.h"
12
14
 
13
15
 
14
16
@implementation TappityView
23
25
    return self;
24
26
}
25
27
 
 
28
- (void) setupGraphicsForApi: (EAGLRenderingAPI) glApi
 
29
{
 
30
 
 
31
        secondaryContext = [[EAGLContext alloc] initWithAPI: glApi sharegroup: [context sharegroup]];
 
32
 
 
33
        glClearColor(0.0f,0.0f,0.0f,1.0f);
 
34
 
 
35
        if ([[EAGLContext currentContext] API] == kEAGLRenderingAPIOpenGLES2)
 
36
        {
 
37
                imgShader = [[[ESShader shader] initWithVertexShaderFile: @"jigsawPiece.vs" fragmentShaderFile: @"jigsawPiece.fs"] retain];
 
38
        }
 
39
        else
 
40
        {
 
41
                imgShader = [[[ESShader shader] init] retain];
 
42
        }
 
43
 
 
44
        
 
45
}
 
46
 
26
47
- (void) setImage: (UIImage*) img
27
48
{
 
49
        [EAGLContext setCurrentContext: secondaryContext];
 
50
        
 
51
        GLuint tex = 0;
 
52
        [self textureFromCgImage: [img CGImage] texName: &tex width: 320 height: 480 repeat: NO mipmap: NO filter: NO];
 
53
        
 
54
        glFlush();
 
55
 
28
56
        @synchronized(self)
29
57
        {
30
58
                [img retain];
31
59
                [image release];
32
60
                image = img;
 
61
                
 
62
                if (imageTex)
 
63
                        glDeleteTextures(1, &imageTex);
 
64
                imageTex = tex;
33
65
        }
34
 
        [self performSelectorOnMainThread: @selector(setNeedsDisplay) withObject: nil waitUntilDone: NO];
 
66
 
 
67
        glFlush();
 
68
 
 
69
        [self performSelectorOnMainThread: @selector(drawView) withObject: nil waitUntilDone: NO];
35
70
        //[self setNeedsDisplay];
36
71
}
37
72
 
 
73
- (void) drawView
 
74
{
 
75
        m16 I = midentity();
 
76
                
 
77
        [self setupViewDrawing];
 
78
        
 
79
        glDisable(GL_CULL_FACE);
 
80
        glEnable(GL_TEXTURE_2D);
 
81
        glDisable(GL_DEPTH_TEST);
 
82
        glDisable(GL_BLEND);
 
83
        glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
 
84
        
 
85
        glBindTexture(GL_TEXTURE_2D, imageTex);
 
86
        
 
87
        [imgShader bindShader];
 
88
        
 
89
        [imgShader setColorRed: 1.0f green: 1.0f blue: 1.0f alpha: 1.0f];
 
90
        
 
91
        [imgShader setTextureMatrix: &I];
 
92
        [imgShader setProjectionMatrix: &I];
 
93
        [imgShader setModelviewMatrix: &I];
 
94
        
 
95
        [[VertexArray sharedQuad] draw];
 
96
        
 
97
        
 
98
        [self finishViewDrawing];
 
99
}
 
100
 
 
101
 
 
102
/*
38
103
- (void) doDrawingInContext: (void*) _c
39
104
{
40
105
        CGContextRef c = (CGContextRef)_c;
68
133
        
69
134
        [self doDrawingInContext: c];
70
135
}
71
 
 
 
136
*/
72
137
 
73
138
- (void)dealloc
74
139
{

Loggerhead 1.17 is a web-based interface for Bazaar branches