12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #define ZGL_IMPORT
- #include "zglHeader.h"
- int calc;
- zglTPoint2D points[360];
- void Init()
- {
- for ( int i = 0; i < 360; i++ )
- {
- points[ i ].X = 400 + m_Cos( i ) * ( 96 + rand() % 32 );
- points[ i ].Y = 300 + m_Sin( i ) * ( 96 + rand() % 32 );
- }
- }
- void Draw()
- {
- // RU: Устанавливаем цвет и альфу для каждой вершины.
- // EN: Set color and alpha for each vertex.
- fx2d_SetVCA( 0xFF0000, 0x00FF00, 0x0000FF, 0xFFFFFF, 255, 255, 255, 255 );
- // RU: Рисуем прямоугольник с заливкой(флаг PR2D_FILL) с использованием отдельных цветов для каждой вершины(флаг FX2D_VCA).
- // EN: Render filled rectangle(flag PR2D_FILL) and use different colors for each vertex(flag FX2D_VCA).
- pr2d_Rect( 0, 0, 800, 600, 0x000000, 255, FX2D_VCA | PR2D_FILL );
- // RU: Рисуем в центре экрана круг с радиусом 128 пиксела.
- // EN: Render circle in the center of screen with radius 128 pixels.
- pr2d_Circle( 400, 300, 128, 0x000000, 155, 32, PR2D_FILL );
- calc++;
- if ( calc > 359 )
- calc = 0;
- points[ calc ].X = 400 + m_Cos( calc ) * ( 96 + rand() % 32 );
- points[ calc ].Y = 300 + m_Sin( calc ) * ( 96 + rand() % 32 );
- // RU: Рисуем линии внутри круга.
- // EN: Render lines inside the circle.
- for ( int i = 0; i < 360; i++ )
- pr2d_Line( 400, 300, points[ i ].X, points[ i ].Y, 0xFFFFFF, 255 );
- // RU: Рисуем эллипсы с заливкой и без, со сглаженными контурами(флаг PR2D_SMOOTH).
- // EN: Render filled ellipses with smoothed edges(flag PR2D_SMOOTH).
- pr2d_Ellipse( 400 + 300, 300, 64, 256, 0xFFFFFF, 55, 32, PR2D_FILL | PR2D_SMOOTH );
- pr2d_Ellipse( 400 + 300, 300, 64, 256, 0x000000, 255, 32, PR2D_SMOOTH );
- pr2d_Ellipse( 400 - 300, 300, 64, 256, 0xFFFFFF, 55, 32, PR2D_FILL | PR2D_SMOOTH );
- pr2d_Ellipse( 400 - 300, 300, 64, 256, 0x000000, 255, 32, PR2D_SMOOTH );
- }
- void Timer()
- {
- if ( key_Press( K_ESCAPE ) ) zgl_Exit();
- key_ClearState();
- }
- int CALLBACK WinMain (
- __in HINSTANCE hInstance,
- __in_opt HINSTANCE hPrevInstance,
- __in_opt LPSTR lpCmdLine,
- __in int nShowCmd
- )
- {
- if ( !zglLoad( libZenGL ) ) return 0;
- srand( 0xDeaDBeeF );
- timer_Add( (void*)&Timer, 16 );
- zgl_Reg( SYS_LOAD, (void*)&Init );
- zgl_Reg( SYS_DRAW, (void*)&Draw );
- wnd_SetCaption( "05 - Primitives" );
- wnd_ShowCursor( TRUE );
- scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE );
- zgl_Init();
- zglFree();
- return 0;
- }
|