Example of using "Canvas" form "Graphics" library to display 3D graphics.

Dependencies:   BSP_DISCO_F746NG Graphics mbed

Committer:
karpent
Date:
Fri Nov 11 17:06:53 2016 +0000
Revision:
3:aca7fe2d44b3
Parent:
1:4a5e329e617b
New 3d models added

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 3:aca7fe2d44b3 12 Square::Square(Display* display) : Model()
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 3:aca7fe2d44b3 20 // Let model size change in the range 2 .. 8.
karpent 3:aca7fe2d44b3 21 // Set 3 as initial size
karpent 3:aca7fe2d44b3 22 SetShamScaleMode(3.f, 2.f, 8.f, 0.4f);
karpent 3:aca7fe2d44b3 23
karpent 0:8acbce46eede 24 glPointSize(4);
karpent 0:8acbce46eede 25
karpent 0:8acbce46eede 26 glMatrixMode(GL_PROJECTION);
karpent 0:8acbce46eede 27 glLoadIdentity();
karpent 0:8acbce46eede 28 gluOrtho2D(-5.0, 5.0, -5.0, 5.0);
karpent 0:8acbce46eede 29
karpent 0:8acbce46eede 30 glMatrixMode(GL_MODELVIEW);
karpent 0:8acbce46eede 31 }
karpent 0:8acbce46eede 32
karpent 0:8acbce46eede 33
karpent 0:8acbce46eede 34 void Square::Render()
karpent 0:8acbce46eede 35 {
karpent 3:aca7fe2d44b3 36 float scale = GetScaleValue();
karpent 0:8acbce46eede 37
karpent 0:8acbce46eede 38 glLoadIdentity();
karpent 3:aca7fe2d44b3 39 glRotatef(GetAngleValue(), 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 }