Update GraphicsApi.md file

Signed-off-by: Vitalii Koshura <lestat.de.lionkur@gmail.com>
Vitalii Koshura 2023-02-21 11:59:50 +01:00
parent 65af5034a4
commit 9c5a6d8bfc
No known key found for this signature in database
GPG Key ID: CE0DB1726070A5A3
1 changed files with 66 additions and 66 deletions

@ -1,39 +1,39 @@
[[PageOutline]] # Using OpenGL
The [BOINC graphics API](#api) provides cross-platform support for developing graphics apps. The [BOINC graphics API](#api) provides cross-platform support for developing graphics apps.
A complete example can be found in [boinc/samples/example_app](ExampleApps). A complete example can be found in [boinc/samples/example_app](ExampleApps).
# The BOINC Graphics API #api # The BOINC Graphics API
BOINC supplies a library (libboinc_graphics2.a) with support for graphics apps. BOINC supplies a library (libboinc_graphics2.a) with support for graphics apps.
To use this library, the graphics app must call To use this library, the graphics app must call
```
boinc_graphics_loop(int argc, char** argv); boinc_graphics_loop(int argc, char** argv);
```
after its initialization. after its initialization.
This function executes an event loop, and does not return. This function executes an event loop, and does not return.
The application must supply the following functions: The application must supply the following functions:
```
void app_graphics_init(); void app_graphics_init();
```
Called once, after the window has been created. Called once, after the window has been created.
```
void app_graphics_render(int xs, ys, double time_of_day); void app_graphics_render(int xs, ys, double time_of_day);
```
This will be called periodically. This will be called periodically.
It should generate the current graphic. It should generate the current graphic.
`xs` and `ys` are the X and Y sizes of the window, and `time_of_day` is the relative time in seconds. `xs` and `ys` are the X and Y sizes of the window, and `time_of_day` is the relative time in seconds.
```
void app_graphics_resize(int x, int y); void app_graphics_resize(int x, int y);
```
Called when the window size changes. Called when the window size changes.
```
void boinc_app_mouse_move( void boinc_app_mouse_move(
int x, int y, // new coords of cursor int x, int y, // new coords of cursor
int left, // whether left mouse button is down int left, // whether left mouse button is down
@ -54,7 +54,7 @@ Called when the window size changes.
void boinc_app_key_release( void boinc_app_key_release(
int, int // system-specific key encodings int, int // system-specific key encodings
) )
```
# Support classes # Support classes
@ -94,15 +94,15 @@ BOINC supports the display of text using TrueType fonts.
* Link with the [FreeType2](http://www.freetype.org) * Link with the [FreeType2](http://www.freetype.org)
and [FTGL](http://sourceforge.net/projects/ftgl/files/FTGL%20Source/) libraries. and [FTGL](http://sourceforge.net/projects/ftgl/files/FTGL%20Source/) libraries.
Depending on how you build the FreeType2 library, FreeType2 may require the libz and libbz2 libraries. Depending on how you build the FreeType2 library, FreeType2 may require the libz and libbz2 libraries.
For Windows, prebuilt libraries are available in the `boinc_depends_win_vs2005` repository. For Windows, prebuilt libraries are available; see https://boinc.berkeley.edu/boinc_depends/.
To build these libraries on the Mac, please see MacBuild. To build these libraries on the Mac, please see MacBuild.
* Include the desired TrueType fonts in your [ app versions](AppVersionNew). * Include the desired TrueType fonts in your [ app versions](AppVersionNew).
The set of free [fonts](Liberation)(https://fedorahosted.org/liberation-fonts) in included the `api/ttf/` directory. The set of free [Liberation fonts](https://fedorahosted.org/liberation-fonts) in included the `api/ttf/` directory.
If you wish to use other TrueType fonts, If you wish to use other TrueType fonts,
you'll need to adjust the list of font names in `ttfont.cpp`. you'll need to adjust the list of font names in `ttfont.cpp`.
(Another source of free fonts is the [Freefont project](GNU)(http://www.gnu.org/software/freefont).) (Another source of free fonts is the [GNU Freefont project](http://www.gnu.org/software/freefont).)
* To display text, use the following API functions: * To display text, use the following API functions:
```
float white[4] = {1., 1., 1., 1.}; float white[4] = {1., 1., 1., 1.};
APP_INIT_DATA aid; APP_INIT_DATA aid;
boinc_get_init_data(aid); boinc_get_init_data(aid);
@ -120,7 +120,7 @@ BOINC supports the display of text using TrueType fonts.
// default is Sans-Regular (0) // default is Sans-Regular (0)
); );
```
Other parameters to **ttf_render_string()** let you specify rotation; see ttfont.h.
Other parameters to *ttf_render_string()* let you specify rotation; see ttfont.h.
For examples, see the `clientscr/ss_app.cpp` and `samples/exampple_app/uc2_graphics.cpp` in the BOINC trunk. For examples, see the `clientscr/ss_app.cpp` and `samples/exampple_app/uc2_graphics.cpp` in the BOINC trunk.