48
53
#include "MT_CmMatrix4x4.h"
49
54
#include "RAS_IRenderTools.h" // rendering text
56
#include "RAS_GLExtensionManager.h"
59
* 32x32 bit masks for vinterlace stereo mode
61
static GLuint left_eye_vinterlace_mask[32];
62
static GLuint right_eye_vinterlace_mask[32];
65
* 32x32 bit masks for hinterlace stereo mode.
66
* Left eye = &hinterlace_mask[0]
67
* Right eye = &hinterlace_mask[1]
69
static GLuint hinterlace_mask[33];
52
71
RAS_OpenGLRasterizer::RAS_OpenGLRasterizer(RAS_ICanvas* canvas)
53
72
:RAS_IRasterizer(canvas),
54
73
m_2DCanvas(canvas),
55
74
m_fogenabled(false),
76
m_stereomode(RAS_STEREO_NOSTEREO),
77
m_curreye(RAS_STEREO_LEFTEYE),
81
m_setfocallength(false),
56
82
m_noOfScanlines(32),
57
83
m_materialCachingInfo(0)
59
85
m_viewmatrix.Identity();
60
m_stereomode = RAS_STEREO_NOSTEREO;
87
for (int i = 0; i < 32; i++)
89
left_eye_vinterlace_mask[i] = 0x55555555;
90
right_eye_vinterlace_mask[i] = 0xAAAAAAAA;
91
hinterlace_mask[i] = (i&1)*0xFFFFFFFF;
93
hinterlace_mask[32] = 0;
140
177
m_blueback = 0.4375;
141
178
m_alphaback = 0.0;
143
// enable both vertexcolor AND lighting color
144
glEnable(GL_COLOR_MATERIAL);
146
180
glClearColor(m_redback,m_greenback,m_blueback,m_alphaback);
181
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
147
182
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
149
184
glShadeModel(GL_SMOOTH);
257
289
glEnable(GL_CULL_FACE);
258
290
glEnable(GL_DEPTH_TEST);
259
291
glClearDepth(1.0);
292
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
260
293
glClearColor(m_redback, m_greenback, m_blueback, m_alphaback);
261
294
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
262
295
glDepthMask (GL_TRUE);
263
296
glDepthFunc(GL_LEQUAL);
264
297
glBlendFunc(GL_ONE, GL_ZERO);
299
glDisable(GL_POLYGON_STIPPLE);
266
301
glDisable(GL_LIGHTING);
302
if (bgl::QueryExtension(bgl::_GL_EXT_separate_specular_color) || bgl::QueryVersion(1, 2))
303
glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SINGLE_COLOR);
308
bool RAS_OpenGLRasterizer::InterlacedStereo() const
310
return m_stereomode == RAS_STEREO_VINTERLACE || m_stereomode == RAS_STEREO_INTERLACED;
273
313
bool RAS_OpenGLRasterizer::BeginFrame(int drawingmode, double time)
276
316
m_drawingmode = drawingmode;
278
m_2DCanvas->ClearColor(m_redback,m_greenback,m_blueback,m_alphaback);
279
m_2DCanvas->ClearBuffer(RAS_ICanvas::COLOR_BUFFER);
318
if (!InterlacedStereo() || m_curreye == RAS_STEREO_LEFTEYE)
320
m_2DCanvas->ClearColor(m_redback,m_greenback,m_blueback,m_alphaback);
321
m_2DCanvas->ClearBuffer(RAS_ICanvas::COLOR_BUFFER);
281
324
// Blender camera routine destroys the settings
282
325
if (m_drawingmode < KX_SOLID)
340
void RAS_OpenGLRasterizer::SetDepthMask(int depthmask)
383
void RAS_OpenGLRasterizer::SetDepthMask(DepthMask depthmask)
344
case KX_DEPTHMASK_ENABLED:
346
glDepthMask(GL_TRUE);
347
//glDisable ( GL_ALPHA_TEST );
350
case KX_DEPTHMASK_DISABLED:
352
glDepthMask(GL_FALSE);
353
//glAlphaFunc ( GL_GREATER, 0.0 ) ;
354
//glEnable ( GL_ALPHA_TEST ) ;
359
//printf("someone made a mistake, RAS_OpenGLRasterizer::SetDepthMask(int depthmask)\n");
385
glDepthMask(depthmask == KX_DEPTHMASK_DISABLED ? GL_FALSE : GL_TRUE);
379
402
void RAS_OpenGLRasterizer::EndFrame()
404
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
381
405
m_2DCanvas->EndFrame();
385
408
void RAS_OpenGLRasterizer::SetRenderArea()
387
410
// only above/below stereo method needs viewport adjustment
388
if(m_stereomode == RAS_STEREO_ABOVEBELOW)
392
case RAS_STEREO_LEFTEYE:
393
// upper half of window
394
m_2DCanvas->GetDisplayArea().SetLeft(0);
395
m_2DCanvas->GetDisplayArea().SetBottom(m_2DCanvas->GetHeight() -
396
int(m_2DCanvas->GetHeight() - m_noOfScanlines) / 2);
398
m_2DCanvas->GetDisplayArea().SetRight(int(m_2DCanvas->GetWidth()));
399
m_2DCanvas->GetDisplayArea().SetTop(int(m_2DCanvas->GetHeight()));
401
case RAS_STEREO_RIGHTEYE:
402
// lower half of window
403
m_2DCanvas->GetDisplayArea().SetLeft(0);
404
m_2DCanvas->GetDisplayArea().SetBottom(0);
405
m_2DCanvas->GetDisplayArea().SetRight(int(m_2DCanvas->GetWidth()));
406
m_2DCanvas->GetDisplayArea().SetTop(int(m_2DCanvas->GetHeight() - m_noOfScanlines) / 2);
412
// every available pixel
413
m_2DCanvas->GetDisplayArea().SetLeft(0);
414
m_2DCanvas->GetDisplayArea().SetBottom(0);
415
m_2DCanvas->GetDisplayArea().SetRight(int(m_2DCanvas->GetWidth()));
416
m_2DCanvas->GetDisplayArea().SetTop(int(m_2DCanvas->GetHeight()));
411
switch (m_stereomode)
413
case RAS_STEREO_ABOVEBELOW:
416
case RAS_STEREO_LEFTEYE:
417
// upper half of window
418
m_2DCanvas->GetDisplayArea().SetLeft(0);
419
m_2DCanvas->GetDisplayArea().SetBottom(m_2DCanvas->GetHeight() -
420
int(m_2DCanvas->GetHeight() - m_noOfScanlines) / 2);
422
m_2DCanvas->GetDisplayArea().SetRight(int(m_2DCanvas->GetWidth()));
423
m_2DCanvas->GetDisplayArea().SetTop(int(m_2DCanvas->GetHeight()));
425
case RAS_STEREO_RIGHTEYE:
426
// lower half of window
427
m_2DCanvas->GetDisplayArea().SetLeft(0);
428
m_2DCanvas->GetDisplayArea().SetBottom(0);
429
m_2DCanvas->GetDisplayArea().SetRight(int(m_2DCanvas->GetWidth()));
430
m_2DCanvas->GetDisplayArea().SetTop(int(m_2DCanvas->GetHeight() - m_noOfScanlines) / 2);
434
case RAS_STEREO_SIDEBYSIDE:
437
case RAS_STEREO_LEFTEYE:
438
// Left half of window
439
m_2DCanvas->GetDisplayArea().SetLeft(0);
440
m_2DCanvas->GetDisplayArea().SetBottom(0);
441
m_2DCanvas->GetDisplayArea().SetRight(m_2DCanvas->GetWidth()/2);
442
m_2DCanvas->GetDisplayArea().SetTop(m_2DCanvas->GetHeight());
444
case RAS_STEREO_RIGHTEYE:
445
// Right half of window
446
m_2DCanvas->GetDisplayArea().SetLeft(m_2DCanvas->GetWidth()/2);
447
m_2DCanvas->GetDisplayArea().SetBottom(0);
448
m_2DCanvas->GetDisplayArea().SetRight(m_2DCanvas->GetWidth());
449
m_2DCanvas->GetDisplayArea().SetTop(m_2DCanvas->GetHeight());
454
// every available pixel
455
m_2DCanvas->GetDisplayArea().SetLeft(0);
456
m_2DCanvas->GetDisplayArea().SetBottom(0);
457
m_2DCanvas->GetDisplayArea().SetRight(int(m_2DCanvas->GetWidth()));
458
m_2DCanvas->GetDisplayArea().SetTop(int(m_2DCanvas->GetHeight()));
421
void RAS_OpenGLRasterizer::SetStereoMode(const int stereomode)
464
void RAS_OpenGLRasterizer::SetStereoMode(const StereoMode stereomode)
423
466
m_stereomode = stereomode;
437
void RAS_OpenGLRasterizer::SetEye(int eye)
480
void RAS_OpenGLRasterizer::SetEye(StereoEye eye)
440
if(m_stereomode == RAS_STEREO_QUADBUFFERED) {
441
if(m_curreye == RAS_STEREO_LEFTEYE)
442
glDrawBuffer(GL_BACK_LEFT);
444
glDrawBuffer(GL_BACK_RIGHT);
483
switch (m_stereomode)
485
case RAS_STEREO_QUADBUFFERED:
486
glDrawBuffer(m_curreye == RAS_STEREO_LEFTEYE ? GL_BACK_LEFT : GL_BACK_RIGHT);
488
case RAS_STEREO_ANAGLYPH:
489
if (m_curreye == RAS_STEREO_LEFTEYE)
491
glColorMask(GL_FALSE, GL_TRUE, GL_TRUE, GL_FALSE);
493
//glAccum(GL_LOAD, 1.0);
494
glColorMask(GL_TRUE, GL_FALSE, GL_FALSE, GL_FALSE);
498
case RAS_STEREO_VINTERLACE:
500
glEnable(GL_POLYGON_STIPPLE);
501
glPolygonStipple((const GLubyte*) ((m_curreye == RAS_STEREO_LEFTEYE) ? left_eye_vinterlace_mask : right_eye_vinterlace_mask));
502
if (m_curreye == RAS_STEREO_RIGHTEYE)
506
case RAS_STEREO_INTERLACED:
508
glEnable(GL_POLYGON_STIPPLE);
509
glPolygonStipple((const GLubyte*) &hinterlace_mask[m_curreye == RAS_STEREO_LEFTEYE?0:1]);
510
if (m_curreye == RAS_STEREO_RIGHTEYE)
519
RAS_IRasterizer::StereoEye RAS_OpenGLRasterizer::GetEye()
449
525
void RAS_OpenGLRasterizer::SetEyeSeparation(float eyeseparation)
451
527
m_eyeseparation = eyeseparation;
531
float RAS_OpenGLRasterizer::GetEyeSeparation()
533
return m_eyeseparation;
455
536
void RAS_OpenGLRasterizer::SetFocalLength(float focallength)
457
538
m_focallength = focallength;
539
m_setfocallength = true;
542
float RAS_OpenGLRasterizer::GetFocalLength()
544
return m_focallength;
530
617
glColor4d(rgbacolor[0], rgbacolor[1], rgbacolor[2], rgbacolor[3]);
532
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
533
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
534
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
537
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
538
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
539
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
542
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
543
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
544
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
547
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
619
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
620
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
621
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
624
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
625
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
626
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
629
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
630
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
631
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
634
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
548
635
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
549
636
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
558
645
// However it depends on the way the colors are packed into
559
646
// the m_rgba field of RAS_TexVert
561
glColor4ubv((const GLubyte *)&(vertexarray[(indexarray[vindex])].getRGBA()));
562
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
563
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
564
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
567
glColor4ubv((const GLubyte *)&(vertexarray[(indexarray[vindex])].getRGBA()));
568
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
569
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
570
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
573
glColor4ubv((const GLubyte *)&(vertexarray[(indexarray[vindex])].getRGBA()));
574
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
575
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
576
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
579
glColor4ubv((const GLubyte *)&(vertexarray[(indexarray[vindex])].getRGBA()));
580
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
648
glColor4ubv((const GLubyte *)(vertexarray[(indexarray[vindex])].getRGBA()));
649
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
650
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
651
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
654
glColor4ubv((const GLubyte *)(vertexarray[(indexarray[vindex])].getRGBA()));
655
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
656
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
657
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
660
glColor4ubv((const GLubyte *)(vertexarray[(indexarray[vindex])].getRGBA()));
661
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
662
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
663
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
666
glColor4ubv((const GLubyte *)(vertexarray[(indexarray[vindex])].getRGBA()));
667
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
581
668
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
582
669
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
598
685
glColor4d(rgbacolor[0], rgbacolor[1], rgbacolor[2], rgbacolor[3]);
600
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
601
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
602
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
605
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
606
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
607
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
610
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
687
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
688
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
689
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
692
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
693
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
694
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
697
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
611
698
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
612
699
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
618
705
for (unsigned int i=0;i<numindices;i+=3)
621
glColor4ubv((const GLubyte *)&(vertexarray[(indexarray[vindex])].getRGBA()));
622
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
623
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
624
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
627
glColor4ubv((const GLubyte *)&(vertexarray[(indexarray[vindex])].getRGBA()));
628
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
629
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
630
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
633
glColor4ubv((const GLubyte *)&(vertexarray[(indexarray[vindex])].getRGBA()));
634
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
708
glColor4ubv((const GLubyte *)(vertexarray[(indexarray[vindex])].getRGBA()));
709
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
710
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
711
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
714
glColor4ubv((const GLubyte *)(vertexarray[(indexarray[vindex])].getRGBA()));
715
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
716
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
717
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
720
glColor4ubv((const GLubyte *)(vertexarray[(indexarray[vindex])].getRGBA()));
721
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
635
722
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
636
723
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
733
820
glColor4d(rgbacolor[0], rgbacolor[1], rgbacolor[2], rgbacolor[3]);
736
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
737
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
738
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
742
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
743
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
744
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
748
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
749
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
750
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
754
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
823
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
824
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
825
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
829
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
830
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
831
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
835
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
836
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
837
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
841
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
755
842
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
756
843
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
777
864
mv1 = MT_Point3(vertexarray[(indexarray[vindex])].getLocalXYZ());
778
865
mv2 = MT_Point3(vertexarray[(indexarray[vindex+1])].getLocalXYZ());
779
866
mv3 = MT_Point3(vertexarray[(indexarray[vindex+2])].getLocalXYZ());
780
mv4 = MT_Point3(vertexarray[(indexarray[vindex+2])].getLocalXYZ());
867
mv4 = MT_Point3(vertexarray[(indexarray[vindex+3])].getLocalXYZ());
782
869
fnor = (((mv2-mv1).cross(mv3-mv2))+((mv4-mv3).cross(mv1-mv4))).safe_normalized();
784
871
glNormal3f(fnor[0], fnor[1], fnor[2]);
787
glColor4ubv((const GLubyte *)&(vertexarray[(indexarray[vindex])].getRGBA()));
789
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
790
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
791
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
794
glColor4ubv((const GLubyte *)&(vertexarray[(indexarray[vindex])].getRGBA()));
796
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
797
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
798
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
801
glColor4ubv((const GLubyte *)&(vertexarray[(indexarray[vindex])].getRGBA()));
803
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
804
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
805
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
808
glColor4ubv((const GLubyte *)&(vertexarray[(indexarray[vindex])].getRGBA()));
810
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
874
glColor4ubv((const GLubyte *)(vertexarray[(indexarray[vindex])].getRGBA()));
876
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
877
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
878
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
881
glColor4ubv((const GLubyte *)(vertexarray[(indexarray[vindex])].getRGBA()));
883
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
884
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
885
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
888
glColor4ubv((const GLubyte *)(vertexarray[(indexarray[vindex])].getRGBA()));
890
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
891
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
892
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
895
glColor4ubv((const GLubyte *)(vertexarray[(indexarray[vindex])].getRGBA()));
897
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
811
898
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
812
899
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
844
931
glColor4d(rgbacolor[0], rgbacolor[1], rgbacolor[2], rgbacolor[3]);
847
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
848
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
849
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
853
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
854
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
855
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
859
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
934
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
935
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
936
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
940
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
941
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
942
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
946
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
860
947
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
861
948
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
884
971
glNormal3f(fnor[0], fnor[1], fnor[2]);
887
glColor4ubv((const GLubyte *)&(vertexarray[(indexarray[vindex])].getRGBA()));
889
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
890
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
891
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
894
glColor4ubv((const GLubyte *)&(vertexarray[(indexarray[vindex])].getRGBA()));
896
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
897
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
898
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
901
glColor4ubv((const GLubyte *)&(vertexarray[(indexarray[vindex])].getRGBA()));
903
glNormal3sv(vertexarray[(indexarray[vindex])].getNormal());
974
glColor4ubv((const GLubyte *)(vertexarray[(indexarray[vindex])].getRGBA()));
976
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
977
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
978
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
981
glColor4ubv((const GLubyte *)(vertexarray[(indexarray[vindex])].getRGBA()));
983
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
984
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
985
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
988
glColor4ubv((const GLubyte *)(vertexarray[(indexarray[vindex])].getRGBA()));
990
glNormal3fv(vertexarray[(indexarray[vindex])].getNormal());
904
991
glTexCoord2fv(vertexarray[(indexarray[vindex])].getUV1());
905
992
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
992
1079
float v1[3],v2[3],v3[3],v4[3];
994
char *cp= (char *)&(vertexarray[(indexarray[vindex])].getRGBA());
995
1081
v1[0] = vertexarray[(indexarray[vindex])].getLocalXYZ()[0];
996
1082
v1[1] = vertexarray[(indexarray[vindex])].getLocalXYZ()[1];
997
1083
v1[2] = vertexarray[(indexarray[vindex])].getLocalXYZ()[2];
1000
cp= (char *)&(vertexarray[(indexarray[vindex])].getRGBA());
1001
1086
v2[0] = vertexarray[(indexarray[vindex])].getLocalXYZ()[0];
1002
1087
v2[1] = vertexarray[(indexarray[vindex])].getLocalXYZ()[1];
1003
1088
v2[2] = vertexarray[(indexarray[vindex])].getLocalXYZ()[2];
1006
cp= (char *)&(vertexarray[(indexarray[vindex])].getRGBA());
1007
1091
v3[0] = vertexarray[(indexarray[vindex])].getLocalXYZ()[0];
1008
1092
v3[1] = vertexarray[(indexarray[vindex])].getLocalXYZ()[1];
1009
1093
v3[2] = vertexarray[(indexarray[vindex])].getLocalXYZ()[2];
1012
cp= (char *)&(vertexarray[(indexarray[vindex])].getRGBA());
1013
1096
v4[0] = vertexarray[(indexarray[vindex])].getLocalXYZ()[0];
1014
1097
v4[1] = vertexarray[(indexarray[vindex])].getLocalXYZ()[1];
1015
1098
v4[2] = vertexarray[(indexarray[vindex])].getLocalXYZ()[2];
1095
1178
float near_div_focallength;
1096
1179
// next 2 params should be specified on command line and in Blender publisher
1097
m_focallength = 1.5 * right; // derived from example
1098
m_eyeseparation = 0.18 * right; // just a guess...
1180
if (!m_setfocallength)
1181
m_focallength = 1.5 * right; // derived from example
1183
m_eyeseparation = 0.18 * right; // just a guess...
1100
1185
near_div_focallength = frustnear / m_focallength;
1101
1186
switch(m_curreye)
1126
1211
// next arguments probably contain redundant info, for later...
1127
1212
void RAS_OpenGLRasterizer::SetViewMatrix(const MT_Matrix4x4 &mat, const MT_Vector3& campos,
1128
const MT_Point3 &camLoc, const MT_Quaternion &camOrientQuat)
1213
const MT_Point3 &, const MT_Quaternion &camOrientQuat)
1130
1215
MT_Matrix4x4 viewMat = mat;