269 :(bool)immediate translucent:(bool)translucent
270{
272
274 assert(player !=
nil);
275
276#ifndef NDEBUG
278#endif
279
280#if OO_SHADERS
281 if (
EXPECT_NOT(shaderMode == kShaderModeUnknown)) [
self checkShaderMode];
282 BOOL useShader = (shaderMode == kShaderModeOn);
283#endif
284
285
286 GLfloat *fogcolor = [UNIVERSE skyClearColor];
287 float idealDustSize = [[UNIVERSE gameView] viewSize].width / 800.0f;
288
290 float dustIntensity;
291
294 OOGL(glDisableClientState(GL_NORMAL_ARRAY));
295
296 if (!warp_stars)
297 {
298
299 float dustPointSize = ceil(idealDustSize);
300 if (dustPointSize < 1.0f) dustPointSize = 1.0f;
302 dustIntensity = OOClamp_0_1_f(idealDustSize / dustPointSize);
303 }
304 else
305 {
306
307 float idealLineSize = idealDustSize * 0.5f;
308 float dustLineSize = ceil(idealLineSize);
309 if (dustLineSize < 1.0f) dustLineSize = 1.0f;
311 dustIntensity = OOClamp_0_1_f(idealLineSize / dustLineSize);
312 }
313 if (fogcolor[3] > 0.0)
314 {
315
316 dustIntensity = OOClamp_0_1_f(dustIntensity-(fogcolor[3]*3.0));
317 }
318
319
320 if (dustIntensity > 0.0)
321 {
322
323 float *color = NULL;
325 else color =
UNIVERSE->stars_ambient;
326 OOGL(glColor4f(color[0], color[1], color[2], dustIntensity));
327
328#if OO_SHADERS
329 if (useShader)
330 {
331 [[self shader] apply];
332 [uniforms makeObjectsPerformSelector:@selector(apply)];
333 }
334 else
335#endif
336 {
337 OOGL(glEnable(GL_FOG));
338 OOGL(glFogi(GL_FOG_MODE, GL_LINEAR));
339 OOGL(glFogfv(GL_FOG_COLOR, fogcolor));
340 OOGL(glHint(GL_FOG_HINT, GL_NICEST));
343 }
344
345 OOGL(glEnable(GL_BLEND));
346 OOGL(glDepthMask(GL_FALSE));
347
348 if (warp_stars)
349 {
350 OOGL(glDisable(GL_TEXTURE_2D));
351#if OO_SHADERS
352 if (useShader)
353 {
354 OOGL(glEnableVertexAttribArrayARB(kTangentAttributeIndex));
355 OOGL(glVertexAttribPointerARB(kTangentAttributeIndex, 1, GL_FLOAT, GL_FALSE, 0, warpinessAttr));
356 }
357 else
358#endif
359 {
361 unsigned vi;
363 {
365 }
366 }
367
370
371#if OO_SHADERS
372 if (useShader)
373 {
374 OOGL(glDisableVertexAttribArrayARB(kTangentAttributeIndex));
375 }
376#endif
377 OOGL(glEnable(GL_TEXTURE_2D));
378
379 }
380 else
381 {
383 {
384#if OO_SHADERS
385 if (!useShader)
386#endif
387 {
388 OOGL(glBlendFunc(GL_SRC_ALPHA, GL_ONE));
389 }
390 OOGL(glEnable(GL_POINT_SPRITE_ARB));
391 [texture apply];
394 OOGL(glDisable(GL_POINT_SPRITE_ARB));
395 }
396 else
397 {
398 OOGL(glDisable(GL_TEXTURE_2D));
401 OOGL(glEnable(GL_TEXTURE_2D));
402 }
403 }
404
405
406#if OO_SHADERS
407 if (useShader)
408 {
409 [OOShaderProgram applyNone];
410 }
411 else
412#endif
413 {
414 OOGL(glDisable(GL_FOG));
415 OOGL(glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA));
416 }
417
418 OOGL(glDisable(GL_BLEND));
419 OOGL(glDepthMask(GL_TRUE));
420
421 }
422 OOGL(glEnableClientState(GL_NORMAL_ARRAY));
423
426}
#define OO_ENTER_OPENGL()
#define OOVerifyOpenGLState()
BOOL OOCheckOpenGLErrors(NSString *format,...)
void GLScaledLineWidth(GLfloat width)
#define OOSetOpenGLState(STATE)
void GLScaledPointSize(GLfloat size)
Vector vertices[DUST_N_PARTICLES *2]
GLushort indices[DUST_N_PARTICLES *2]