blob: f7328bdbc1663f8a328fc98bb8182efd4a5cc656 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
#include <stdbool.h>
#include "aligned_vector.h"
#include "private.h"
PolyList OP_LIST;
PolyList PT_LIST;
PolyList TR_LIST;
/**
* FAST_MODE will use invW for all Z coordinates sent to the
* GPU.
*
* This will break orthographic mode so default is FALSE
**/
#define FAST_MODE GL_FALSE
void glKosInit() {
TRACE();
_glInitContext();
_glInitTextures();
OP_LIST.list_type = PVR_LIST_OP_POLY;
PT_LIST.list_type = PVR_LIST_PT_POLY;
TR_LIST.list_type = PVR_LIST_TR_POLY;
aligned_vector_init(&OP_LIST.vector);
aligned_vector_init(&PT_LIST.vector);
aligned_vector_init(&TR_LIST.vector);
aligned_vector_reserve(&OP_LIST.vector, 1024 * 3);
aligned_vector_reserve(&PT_LIST.vector, 512 * 3);
aligned_vector_reserve(&TR_LIST.vector, 1024 * 3);
}
void glKosSwapBuffers() {
TRACE();
pvr_scene_begin();
if(aligned_vector_size(&OP_LIST.vector) > 2) {
pvr_list_begin(PVR_LIST_OP_POLY);
SceneListSubmit((Vertex*) aligned_vector_front(&OP_LIST.vector), aligned_vector_size(&OP_LIST.vector));
pvr_list_finish();
}
if(aligned_vector_size(&PT_LIST.vector) > 2) {
pvr_list_begin(PVR_LIST_PT_POLY);
SceneListSubmit((Vertex*) aligned_vector_front(&PT_LIST.vector), aligned_vector_size(&PT_LIST.vector));
pvr_list_finish();
}
if(aligned_vector_size(&TR_LIST.vector) > 2) {
pvr_list_begin(PVR_LIST_TR_POLY);
SceneListSubmit((Vertex*) aligned_vector_front(&TR_LIST.vector), aligned_vector_size(&TR_LIST.vector));
pvr_list_finish();
}
pvr_scene_finish();
aligned_vector_clear(&OP_LIST.vector);
aligned_vector_clear(&PT_LIST.vector);
aligned_vector_clear(&TR_LIST.vector);
_glApplyScissor(true);
}
|