Example of using "Canvas" form "Graphics" library to display 3D graphics.
Dependencies: BSP_DISCO_F746NG Graphics mbed
Models/Square.cpp@3:aca7fe2d44b3, 2016-11-11 (annotated)
- 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?
User | Revision | Line number | New 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 | } |