Miroslaw K. / Mbed 2 deprecated 3DDemo

Dependencies:   BSP_DISCO_F746NG Graphics mbed

Committer:
karpent
Date:
Thu Nov 10 15:38:50 2016 +0000
Revision:
1:4a5e329e617b
Parent:
0:8acbce46eede
Child:
3:aca7fe2d44b3
New models added - Cube and Sphere

Who changed what in which revision?

UserRevisionLine numberNew contents of line
karpent 0:8acbce46eede 1 //
karpent 0:8acbce46eede 2 // Square.cpp - example of usage graphics commands to create 3D graphics.
karpent 0:8acbce46eede 3 //
karpent 0:8acbce46eede 4 // This example is based on code written by
karpent 0:8acbce46eede 5 // Fabio de Albuquerque Dela Antonio (fabio914 at gmail.com)
karpent 0:8acbce46eede 6 // See : https://github.com/fabio914/arduinogl/blob/master/examples
karpent 0:8acbce46eede 7 //
karpent 0:8acbce46eede 8
karpent 0:8acbce46eede 9 #include "Square.h"
karpent 0:8acbce46eede 10
karpent 0:8acbce46eede 11 // Constructor
karpent 1:4a5e329e617b 12 Square::Square(Display* display) : Angle()
karpent 0:8acbce46eede 13 {
karpent 1:4a5e329e617b 14 glUseCanvas(display);
karpent 0:8acbce46eede 15 }
karpent 0:8acbce46eede 16
karpent 0:8acbce46eede 17
karpent 0:8acbce46eede 18 void Square::Setup()
karpent 0:8acbce46eede 19 {
karpent 0:8acbce46eede 20 glPointSize(4);
karpent 0:8acbce46eede 21
karpent 0:8acbce46eede 22 glMatrixMode(GL_PROJECTION);
karpent 0:8acbce46eede 23 glLoadIdentity();
karpent 0:8acbce46eede 24 gluOrtho2D(-5.0, 5.0, -5.0, 5.0);
karpent 0:8acbce46eede 25
karpent 0:8acbce46eede 26 glMatrixMode(GL_MODELVIEW);
karpent 0:8acbce46eede 27 }
karpent 0:8acbce46eede 28
karpent 0:8acbce46eede 29
karpent 0:8acbce46eede 30 void Square::Render()
karpent 0:8acbce46eede 31 {
karpent 0:8acbce46eede 32 // TODO : Use Scale() class
karpent 0:8acbce46eede 33 static float scale = 3.0;
karpent 0:8acbce46eede 34 static float scaleInc = 0.4;
karpent 0:8acbce46eede 35 const float maxScale = 8.0;
karpent 0:8acbce46eede 36 const float minScale = 2.0;
karpent 0:8acbce46eede 37
karpent 0:8acbce46eede 38 glLoadIdentity();
karpent 0:8acbce46eede 39 glRotatef(angle, 0.f, 0.f, 1.f);
karpent 0:8acbce46eede 40 glScalef(scale, scale, 0.f);
karpent 0:8acbce46eede 41 glTranslatef(-0.5f, -0.5f, 0.f);
karpent 0:8acbce46eede 42
karpent 0:8acbce46eede 43 glBegin(GL_POLYGON);
karpent 0:8acbce46eede 44 glVertex3f(0.f, 1.f, 0.f);
karpent 0:8acbce46eede 45 glVertex3f(0.f, 0.f, 0.f);
karpent 0:8acbce46eede 46 glVertex3f(1.f, 0.f, 0.f);
karpent 0:8acbce46eede 47 glVertex3f(1.f, 1.f, 0.f);
karpent 0:8acbce46eede 48 glEnd();
karpent 0:8acbce46eede 49
karpent 0:8acbce46eede 50 scale += scaleInc;
karpent 0:8acbce46eede 51
karpent 0:8acbce46eede 52 if(scale > maxScale)
karpent 0:8acbce46eede 53 scaleInc *= -1.f;
karpent 0:8acbce46eede 54
karpent 0:8acbce46eede 55 if(scale < minScale)
karpent 0:8acbce46eede 56 scaleInc *= -1.f;
karpent 0:8acbce46eede 57 }