annotate old/simple_render/task/create_span.cpp @ 507:735f76483bb2

Reorganization..
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 12 Oct 2009 09:39:35 +0900
parents TaskManager/Test/simple_render/task/create_span.cpp@f64d75473f95
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
86
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
1 #include <iostream>
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
2 #include "viewer.h"
86
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
3 #include "polygon_pack.h"
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
4 #include "SpuSpan.h"
86
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
5 using namespace std;
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
6
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
7 static float calc(float f1, float f2,int i, float base){
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
8 float ans;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
9 ans = f1/f2*i + base;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
10 return ans;
86
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
11 }
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
12
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
13
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
14 static VertexPack*
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
15 vMid1(VertexPack *vMid1, VertexPack *vMin, VertexPack *vMid, VertexPack *vMax)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
16 {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
17 int d, d1;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
18
321
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
19 // float2int のマクロとか書く?
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
20 #if 0
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
21 d = (int)vMax->y - (int)vMin->y;
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
22 d1 = (int)vMid->y - (int)vMin->y;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
23 #else
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
24 d = (int)(vMax->y - vMin->y);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
25 d1 = (int)(vMid->y - vMin->y);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
26 #endif
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
27
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
28 vMid1->tex_x = calc(vMax->tex_x - vMin->tex_x, d, d1, vMin->tex_x);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
29 vMid1->tex_y = calc(vMax->tex_y - vMin->tex_y, d, d1, vMin->tex_y);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
30 vMid1->x = calc(vMax->x - vMin->x, d, d1, vMin->x);
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
31 vMid1->y = vMid->y;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
32 vMid1->z = calc(vMax->z - vMin->z, d, d1, vMin->z);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
33
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
34 return vMid1;
86
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
35 }
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
36
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
37 void
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
38 half_triangle(SpuSpan *ssl,
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
39 long *tex_addr, long tex_width, long tex_height,
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
40 VertexPack *vMin, VertexPack *vMid, VertexPack *vMid1)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
41 {
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
42 float tmp_z,tmp_tex1, tmp_tex2 ,tmp_tey1,tmp_tey2;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
43 float tmp_xpos,tmp_end,tmp_zpos;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
44 int i;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
45 //int j;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
46 float div_y;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
47 float start_z,end_z;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
48 float start_tex_x,end_tex_x,start_tex_y,end_tex_y;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
49 int x,y,length;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
50 int k =0;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
51 int l = 1;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
52 int start_y = (int)vMid->y;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
53 int end_y = (int)vMin->y;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
54 int real_x, real_y;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
55
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
56 if (start_y<end_y) {
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
57 int i; i=end_y; end_y=start_y; start_y = i;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
58 k = 1;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
59 l = -1;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
60 }
86
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
61
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
62 div_y = start_y - end_y; // > 0
86
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
63
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
64 for(i = k; i < div_y+1; i++) {
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
65 tmp_xpos = calc(vMid1->x - vMin->x ,div_y, i, vMin->x);
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
66 tmp_end = calc(vMid->x - vMin->x ,div_y, i, vMin->x);
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
67 tmp_z = calc(vMid1->z - vMin->z ,div_y, i, vMin->z);
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
68 tmp_zpos = calc(vMid->z - vMin->z ,div_y, i, vMin->z);
86
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
69
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
70 tmp_tex1 =((i/(div_y)) * vMid1->tex_x) +
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
71 ( ((div_y - i)/(div_y)) * vMin->tex_x);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
72 tmp_tex2 =( (i/(div_y)) * vMid->tex_x) +
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
73 ( ((div_y - i)/(div_y)) * vMin->tex_x);
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
74
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
75 tmp_tey1 =( (i/(div_y)) * vMid1->tex_y) +
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
76 ( ((div_y - i)/(div_y)) * vMin->tex_y);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
77 tmp_tey2 =( (i/(div_y)) * vMid->tex_y) +
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
78 ( ((div_y - i)/(div_y)) * vMin->tex_y);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
79
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
80 if (tmp_xpos > tmp_end) {
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
81 x = (int)tmp_end;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
82 y = (int)vMin->y + i*l;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
83 length = (int)(tmp_xpos)-(int)(tmp_end)+1;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
84 start_z = tmp_zpos;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
85 end_z = tmp_z;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
86 start_tex_x = tmp_tex2;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
87 end_tex_x = tmp_tex1;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
88 start_tex_y = tmp_tey2;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
89 end_tex_y = tmp_tey1;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
90 } else {
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
91 x = (int)tmp_xpos;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
92 y = (int)vMin->y + i*l;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
93 length = (int)(tmp_end)-(int)(tmp_xpos)+1;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
94 start_z = tmp_z;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
95 end_z = tmp_zpos;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
96 start_tex_x = tmp_tex1;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
97 end_tex_x = tmp_tex2;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
98 start_tex_y = tmp_tey1;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
99 end_tex_y = tmp_tey2;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
100 }
99
57bac9e07662 rotate cube only polygon
gongo
parents: 92
diff changeset
101
321
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
102 // 画面外のものはここで
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
103 // この判定で当たってるのかな?
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
104 #if 0
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
105 real_x = x + Viewer::width/2;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
106 real_y = y + Viewer::height/2;
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
107
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
108 if (real_x < 0 || real_x > Viewer::width ||
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
109 real_y < 0 || real_y > Viewer::height) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
110 continue;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
111 }
86
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
112
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
113 int line_set = (y + (Viewer::height/2))/TEXTURE_SPLIT_PIXEL;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
114 #else
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
115 if (x < 0 || x > Viewer::width ||
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
116 y < 0 || y > Viewer::height) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
117 continue;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
118 }
99
57bac9e07662 rotate cube only polygon
gongo
parents: 92
diff changeset
119
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
120 int line_set = y / TEXTURE_SPLIT_PIXEL;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
121 #endif
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
122
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
123 int spu_no = line_set % SPE_NUM_MAX;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
124 int spp_no = line_set / SPE_NUM_MAX;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
125
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
126 SpanPack *spack = &ssl->list[spu_no].packs[spp_no];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
127
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
128 while (spack->next) spack = spack->next;
86
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
129
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
130 if (spack->info.size >= MAX_SIZE_SPAN) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
131 SpanPack *pack_new = new SpanPack();
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
132 //SpanPack *pack_new;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
133 //posix_memalign((void**)&pack_new, 16, sizeof(SpanPack));
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
134 pack_new->init();
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
135 spack->next = pack_new;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
136 spack = pack_new;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
137 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
138
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
139 int span_no = spack->info.size++;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
140 Span *span = &spack->span[span_no];
86
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
141
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
142 span->tex_addr = tex_addr;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
143 span->tex_width = tex_width;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
144 span->tex_height = tex_height;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
145 span->x = x;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
146 span->y = y;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
147 span->length_x = length;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
148 span->start_z = start_z;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
149 span->end_z = end_z;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
150 span->tex_x1 = start_tex_x;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
151 span->tex_x2 = end_tex_x;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
152 span->tex_y1 = start_tex_y;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
153 span->tex_y2 = end_tex_y;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
154 }
86
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
155 }
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
156
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
157 void
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
158 fill(SpuSpan *ssl)
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
159 {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
160 for (int y = 0; y < Viewer::height; y = y + TEXTURE_SPLIT_PIXEL) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
161 int line_set = y / TEXTURE_SPLIT_PIXEL;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
162 int spu_no = line_set % SPE_NUM_MAX;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
163 int spp_no = line_set / SPE_NUM_MAX;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
164
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
165 SpanPack *spack = &ssl->list[spu_no].packs[spp_no];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
166
321
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
167 // 既に Span がある場合はスルー
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
168 if (spack->info.size > 0) continue;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
169
321
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
170 // 塗りつぶし用 Span は info.size = -1
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
171 //
321
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
172 // ってことにしたけど、わかりづらいか・・・・
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
173 spack->info.size = -1;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
174 Span *span = &spack->span[0];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
175 span->y = y;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
176 }
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
177 }
86
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
178
89
a309cf4eafc5 *** empty log message ***
gongo
parents: 86
diff changeset
179 int create_span(void *rbuf,void *wbuf) {
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
180 PolygonPack *polygon = (PolygonPack*)rbuf;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
181 SpuSpan *ssl = polygon->ssl;
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
182 VertexPack *vMin, *vMid, *vMax, *vMid10;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
183 VertexPack ver;
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
184 vMid10 = &ver;
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
185 TrianglePack *triPack;
86
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
186
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
187 ssl->init();
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
188
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
189 for(int a = 0; a < polygon->info.size; a++) {
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
190 triPack = &polygon->tri[a];
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
191
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
192 if (triPack->ver1.y <= triPack->ver2.y) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
193 if (triPack->ver2.y <= triPack->ver3.y) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
194 vMin = &triPack->ver1;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
195 vMid = &triPack->ver2;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
196 vMax = &triPack->ver3;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
197 } else if (triPack->ver3.y <= triPack->ver1.y) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
198 vMin = &triPack->ver3;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
199 vMid = &triPack->ver1;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
200 vMax = &triPack->ver2;
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
201 } else {
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
202 vMin = &triPack->ver1;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
203 vMid = &triPack->ver3;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
204 vMax = &triPack->ver2;
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
205 }
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
206 } else {
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
207 if (triPack->ver1.y <= triPack->ver3.y) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
208 vMin = &triPack->ver2;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
209 vMid = &triPack->ver1;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
210 vMax = &triPack->ver3;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
211 } else if (triPack->ver3.y <= triPack->ver2.y) {
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
212 vMin = &triPack->ver3;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
213 vMid = &triPack->ver2;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
214 vMax = &triPack->ver1;
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
215 } else {
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
216 vMin = &triPack->ver2;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
217 vMid = &triPack->ver3;
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
218 vMax = &triPack->ver1;
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
219 }
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
220 }
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
221
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
222 vMid1(vMid10,vMin,vMid,vMax);
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
223
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
224 half_triangle(ssl, triPack->tex_addr, triPack->tex_width,
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
225 triPack->tex_height, vMin, vMid, vMid10);
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
226
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
227 half_triangle(ssl, polygon->tri[0].tex_addr, polygon->tri[0].tex_width,
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
228 polygon->tri[0].tex_height, vMax, vMid, vMid10);
86
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
229 }
109
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
230
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
231 fill(ssl);
5c194c71eca8 Cerium cvs version
gongo@gendarme.local
parents: 99
diff changeset
232
92
663bc2a213f5 *** empty log message ***
gongo
parents: 89
diff changeset
233 return 0;
86
61bacd3b4405 *** empty log message ***
gongo
parents:
diff changeset
234 }