From 06b1e197e32747a51557412c790ccff7d2c0b260 Mon Sep 17 00:00:00 2001 From: Alexander Popov Date: Sun, 20 Sep 2015 23:47:22 +0300 Subject: [PATCH] added rotate cube example --- Makefile | 5 +- Makefile.win32 | 7 ++- images/Thumbs.db | Bin 0 -> 6144 bytes images/rotate_cube.png | Bin 0 -> 7265 bytes rotate_cube.c | 125 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 134 insertions(+), 3 deletions(-) create mode 100644 images/Thumbs.db create mode 100644 images/rotate_cube.png create mode 100644 rotate_cube.c diff --git a/Makefile b/Makefile index f0605f6..35c2f7d 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,9 @@ CC=gcc -all: fps_counter +all: fps_counter rotate_cube fps_counter: $(CC) fps_counter.c -lglfw -lGL -o fps_counter + +rotate_cube: + $(CC) rotate_cube.c -lglfw -lGL -o rotate_cube.exe diff --git a/Makefile.win32 b/Makefile.win32 index 5475b84..c33f800 100644 --- a/Makefile.win32 +++ b/Makefile.win32 @@ -1,16 +1,19 @@ CC=tcc CFLAGS= -I./win32/include -L./win32/lib -all: fps_counter windows_icon +all: fps_counter rotate_cube windows_icon fps_counter: $(CC) $(CFLAGS) fps_counter.c -lglfw3 -lopengl32 -o fps_counter.exe +rotate_cube: + $(CC) $(CFLAGS) rotate_cube.c -lglfw3 -lopengl32 -o rotate_cube.exe + windows_icon: icon.o $(CC) $(CFLAGS) windows_icon.c icon.o -lglfw3 -lopengl32 -o windows_icon.exe icon.o: - windres -O coff win32/icon/resource.rc -o icon.o + windres -O coff win32/icon/resource.rc -o icon.o clean: del *.o diff --git a/images/Thumbs.db b/images/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..439f3b5a9bdcedc6c0fe2739116fb96bd5a345bf GIT binary patch literal 6144 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 literal 0 HcmV?d00001 diff --git a/images/rotate_cube.png b/images/rotate_cube.png new file mode 100644 index 0000000000000000000000000000000000000000..581c1701ab47b1127e9327f1ef57dc812ca5ccfe GIT binary patch literal 7265 zcmb7|XH-*Zw}6j|Gz)|-O-yJaQlv?5A#{+U^sa>7rB@XU5J8$W0R;i+0@8a63IYOB z17zqT2BaBUk{g{_>)!dk`7!s$dCpop>%4ovdq2r~Ph#)rsb8XIr3L`tlBNdK5CG1= zNS7HUIVrMY64Oq)QF&>Y`2xTN`d`->AnPRy08r~YtE%3)Fea_#igmL%H`$b z>FDhC0007KbBy4|MjK4>xP^TcZA4_Mwx=N@C6}Q}d?Z5>ufR1bS}nx2*E5U;T_80z zGPVz|5a$vSB9V*+f*0ecrzuvhYRFJ1N?MGlAn5D1lDh z>`oE(r$m}>Dw&pNBA=Y;^h>&}O&Q4mCsN2oUO#V|nOR*~nbzu6v9KF32_wL}Z8}ZxZb#vAr?`VZ+LySaZdpaClO6ui{b^sP zkbNYX>WTf_TB7=C!v*3g$2hoG)4s`6fMMBy&N~5`h1|PU2#!@rzTU?(M!dg-5j;7k zfRO;+xhR|oNxJ#g%HiBkZ9ZC4zs@Bb0PMDSc75TeJQwNocyT0vxUGm+f5ihtI%+0+ z1AsM@TgZ5zR~QY=yrlafo*sIK`xRT^8!T+jv>ti{{vlGPjGrHHwN%`2!`r-L+Z78T&X> zNCG8uX7u5;E)6oecy6wb2nGYNc9MjKs9~Hj*If;cU3s6g(oZd6%}KH!fLo7FV_MZk zQ=@7On0+E>QSk_El8E(Fjx&PzgUK1eRr??TubbM!$@@i8C{fGCzT{wfC`r#r?Q5rj;Y?X z##=6SZgJ2ol@!&vCkEYo;FP!8?|GX+N4+few?vB{9t_5|D zy^{BvL!%{r!vPnqE334t;;ZBjGHxl~EyyyQfBV`PB#~&YQt`Upu*%@+TYB+_S<*v~ znKZQvEArFES)G`jaL!d<{hC4ZX`FiLpH0RFH`KqTe?7M!aPd+M*w3A-z1v|K{<0&3bft^i|&& zysEZYZbfljaJW(%D0t2FQd!KyD2ZO)>YTF_T)uy;Mg< ziscON!3iXE3k=)Wm#(uFiR(0pKCpBxeUbjcv`nMSpiF(UO|lYOoKw`M z)?#)Nby>Mzi_elz9iBLRK4;x%#%R8nx|m5ZT*-%Oc-yBcRwyZP`_wOUVD+79DQ+^MXpc6+f$B1xF5Y^pla2lq*`c~W|zMB zB&lgsu3!T83`T==Mp-U%FT11MQ3br@yw`ZOb-(FuWf|%=6zrehJ+2OChBx^> z-b2L4YCjqjN>>odW<$+?Xj{?pJMgwz3?4hk$*#@r#=b>YZAor9Z#|vM`y`%sJ=aXk z_jAt&)jteYM-?yRrHQy=%ER?l^`qc*>kwfF;Utrasdo*90i`&*ZDxg^3O;$u3d?d* z3%3@`Y(7bKHhgFp)bH`kwTZ^4MnH)7iNVBCpg5A}4E$Vdlya2C*^|TI&}$tDiZbX2 zKWk>N%E(tu%8bg1k18Imc2!(+`tbdE#Wmb|#&FWG^X2F};a?{|Q`oK9#rK3?F*P>8hJr5&{aPLN0Q%QqAJciYOsRvriMI zIi{L!+U(Lo0+o^;Zta*;?B3I*oTUrPAe^P z-l}s+XFgjdmnqAi%l($TOq=NAlMOp5RA?&Bx0rYdJm)m(nEL}IIK{<^vkd&>6PJayurGzQPy1pkGks4 zxNcs!OT8K$wmCP2wbC~gHpA4}9mnLbDKN&yRWhKN(-|YC`R4*x*`9h1bY#w@zAq{3 zZMr|=IOe#qws14o;_{2q^tJTM9+zfj-(SMqdyhT%sfHF#AL2*1Jg!%5D(H}FY<*Dt zad=2p(fEz=zVWfK|lpnY+3ZjuQ_~G*4=A zij}dY8;37W+^s6~+`X~==f=+ADIk~Yr<%S@aE!?t8zxTP*i^sVf3=;EvmJ2rlH{ek z&t9UIAYRa*l?@yf2FH0xX4W4WQocwre$}4?&LQlglC_%!%Qnh7v9Pyj*8ik1I{9rO z_*5NzmFA_moLP|8p7BTL*^NizDe&D9WKLR6Sh oGm)PK4jft7~?|Yx!p|bw>YLo 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 P4+qdx(}Py3*gpCn92${{ literal 0 HcmV?d00001 diff --git a/rotate_cube.c b/rotate_cube.c new file mode 100644 index 0000000..9c7ad72 --- /dev/null +++ b/rotate_cube.c @@ -0,0 +1,125 @@ +/* + GLFW3 rotate cube + Source: https://github.com/IIIypuk/glfw-examples +*/ + +#include +#ifndef __WIN32 + #include +#endif +#include + +void keyboard_callback(GLFWwindow *window, int key, int scancode, + int action, int mods); + +int rotate_y = 0; +int rotate_x = 0; + +#ifndef __WIN32 +int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, + LPSTR lpszCmdLine, int nShowCmd) +#else +int main(int argc, char const *argv[]) +#endif +{ + GLFWwindow *window; + + if (!glfwInit()) + return -1; + + glfwWindowHint(GLFW_RESIZABLE, GL_FALSE); + window = glfwCreateWindow(320, 320, "Rorate Cube", NULL, NULL); + + if (!window) + { + glfwTerminate(); + return -1; + } + + glfwMakeContextCurrent(window); + + glEnable(GL_DEPTH_TEST); + + while (!glfwWindowShouldClose(window)) + { + glfwSetKeyCallback(window, keyboard_callback); + + glClearColor(0, 0, 0, 0); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glLoadIdentity(); + + glRotatef(rotate_x, 1.0, 0.0, 0.0); + glRotatef(rotate_y, 0.0, 1.0, 0.0); + + glBegin(GL_POLYGON); // Yellow side - FRONT + glColor3f(1.0, 1.0, 0.0); + glVertex3f( 0.5, -0.5, -0.5); + glVertex3f( 0.5, 0.5, -0.5); + glVertex3f(-0.5, 0.5, -0.5); + glVertex3f(-0.5, -0.5, -0.5); + glEnd(); + + glBegin(GL_POLYGON); // White side - BACK + glColor3f(1.0, 1.0, 1.0); + glVertex3f( 0.5, -0.5, 0.5); + glVertex3f( 0.5, 0.5, 0.5); + glVertex3f(-0.5, 0.5, 0.5); + glVertex3f(-0.5, -0.5, 0.5); + glEnd(); + + glBegin(GL_POLYGON); // Purple side - RIGHT + glColor3f(1.0, 0.0, 1.0); + glVertex3f(0.5, -0.5, -0.5); + glVertex3f(0.5, 0.5, -0.5); + glVertex3f(0.5, 0.5, 0.5); + glVertex3f(0.5, -0.5, 0.5); + glEnd(); + + glBegin(GL_POLYGON); // Green side - LEFT + glColor3f(0.0, 1.0, 0.0); + glVertex3f(-0.5, -0.5, 0.5); + glVertex3f(-0.5, 0.5, 0.5); + glVertex3f(-0.5, 0.5, -0.5); + glVertex3f(-0.5, -0.5, -0.5); + glEnd(); + + glBegin(GL_POLYGON); // Blue side - TOP + glColor3f(0.0, 0.0, 1.0); + glVertex3f( 0.5, 0.5, 0.5); + glVertex3f( 0.5, 0.5, -0.5); + glVertex3f(-0.5, 0.5, -0.5); + glVertex3f(-0.5, 0.5, 0.5); + glEnd(); + + glBegin(GL_POLYGON); // Red side - BOTTOM + glColor3f(1.0, 0.0, 0.0); + glVertex3f( 0.5, -0.5, -0.5); + glVertex3f( 0.5, -0.5, 0.5); + glVertex3f(-0.5, -0.5, 0.5); + glVertex3f(-0.5, -0.5, -0.5); + glEnd(); + + glfwSwapBuffers(window); + glfwPollEvents(); + } + + glfwTerminate(); + return 0; +} + +void keyboard_callback(GLFWwindow* window, int key, int scancode, + int action, int mods) +{ + if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) + glfwSetWindowShouldClose(window, GL_TRUE); + + if (key == GLFW_KEY_UP && action == GLFW_PRESS) + rotate_x += 5; + if (key == GLFW_KEY_DOWN && action == GLFW_PRESS) + rotate_x -= 5; + if (key == GLFW_KEY_RIGHT && action == GLFW_PRESS) + rotate_y -= 5; + if (key == GLFW_KEY_LEFT && action == GLFW_PRESS) + rotate_y += 5; +}