162 |
|
*/ |
163 |
|
for(j=2; j>= 0; j--) |
164 |
|
{ |
165 |
+ |
#ifdef DEBUG |
166 |
+ |
if(SM_BG_SAMPLE(sm,T_NTH_V(tri,j))) |
167 |
+ |
eputs("SmRenderTri(): shouldnt have bg samples\n"); |
168 |
+ |
#endif |
169 |
|
glColor3ub(SM_NTH_RGB(sm,T_NTH_V(tri,j))[0], |
170 |
|
SM_NTH_RGB(sm,T_NTH_V(tri,j))[1], |
171 |
|
SM_NTH_RGB(sm,T_NTH_V(tri,j))[2]); |
177 |
|
/* NOTE SEEMS BAD TO PENALIZE POLYGONS INFRONT BY LETTING |
178 |
|
ADJACENT TRIANGLES TO BG be BG |
179 |
|
*/ |
180 |
< |
smRender_bg_tri(sm,i,vp) |
180 |
> |
smRender_bg_tri(sm,i,vp,d) |
181 |
|
SM *sm; |
182 |
|
int i; |
183 |
|
FVECT vp; |
184 |
+ |
double d; |
185 |
|
{ |
186 |
|
TRI *tri; |
187 |
|
FVECT p; |
188 |
|
int j,ids[3],cnt; |
189 |
< |
BYTE rgb[3]; |
189 |
> |
int rgb[3]; |
190 |
|
|
191 |
+ |
|
192 |
|
tri = SM_NTH_TRI(sm,i); |
193 |
|
SM_CLEAR_NTH_T_NEW(sm,i); |
194 |
|
if(smNew_tri_cnt) |
220 |
|
SM_NTH_RGB(sm,ids[j])[2]); |
221 |
|
else |
222 |
|
glColor3ub(rgb[0],rgb[1],rgb[2]); |
223 |
< |
VSUB(p,SM_NTH_WV(sm,ids[j]),SM_VIEW_CENTER(sm)); |
223 |
> |
if(SM_BG_SAMPLE(sm,ids[j])) |
224 |
> |
VSUB(p,SM_NTH_WV(sm,ids[j]),SM_VIEW_CENTER(sm)); |
225 |
> |
else |
226 |
> |
smDir(sm,p,ids[j]); |
227 |
> |
if(dev_zmin > 1.0) |
228 |
> |
{ |
229 |
> |
p[0] *= d; |
230 |
> |
p[1] *= d; |
231 |
> |
p[2] *= d; |
232 |
> |
} |
233 |
|
VADD(p,p,vp); |
234 |
|
glVertex3d(p[0],p[1],p[2]); |
235 |
|
} |
241 |
|
{ |
242 |
|
int i; |
243 |
|
TRI *tri; |
244 |
< |
double ptr[3]; |
244 |
> |
double ptr[3],d; |
245 |
|
int j; |
246 |
|
|
247 |
+ |
d = (dev_zmin+dev_zmax)/2.0; |
248 |
|
glPushAttrib(GL_DEPTH_BUFFER_BIT); |
249 |
|
|
250 |
|
/* First draw background polygons */ |
251 |
+ |
|
252 |
|
glDisable(GL_DEPTH_TEST); |
253 |
|
glBegin(GL_TRIANGLES); |
254 |
|
SM_FOR_ALL_ACTIVE_BG_TRIS(sm,i) |
255 |
< |
smRender_bg_tri(sm,i,vp); |
255 |
> |
smRender_bg_tri(sm,i,vp,d); |
256 |
|
glEnd(); |
257 |
|
|
258 |
|
glEnable(GL_DEPTH_TEST); |
339 |
|
static int tsize = 0; |
340 |
|
int i; |
341 |
|
GLint depth_test; |
342 |
+ |
double d; |
343 |
|
|
344 |
|
/* For all of the NEW triangles (since last update): assume |
345 |
|
ACTIVE. Go through and sort on depth value (from vp). Turn |
363 |
|
glPushAttrib(GL_DEPTH_BUFFER_BIT); |
364 |
|
glDepthFunc(GL_ALWAYS); /* Turn off Depth-painter's algorithm */ |
365 |
|
|
366 |
+ |
d = (dev_zmin+dev_zmax)/2.0; |
367 |
|
/* Now render back-to front */ |
368 |
|
/* First render bg triangles */ |
369 |
|
glDisable(GL_DEPTH_TEST); |
370 |
|
glBegin(GL_TRIANGLES); |
371 |
|
for(i=0; i< smNew_tri_cnt; i++) |
372 |
|
if(SM_BG_TRI(sm,td[i].tri)) |
373 |
< |
smRender_bg_tri(sm,td[i].tri,vp); |
373 |
> |
smRender_bg_tri(sm,td[i].tri,vp,d); |
374 |
|
glEnd(); |
375 |
|
|
376 |
|
glEnable(GL_DEPTH_TEST); |