io7m
io7m-jcanephora 0.44.0
2.2
Goals
2.2.1
Overview
1
Given the problems with OpenGL, the jcanephora package has the following goals (in no particular order):
2.2.2
Portability
1
Programs using the jcanephora APIs must run on as many different OpenGL implementations as possible. Code written using the API should be version-branch-free, and use only the features common to all available OpenGL implementations.
2.2.3
Type safety
1
Representing every object as an integer is unacceptable. Any conceptually distinct objects must be made type-incompatible, eliminating entire classes of bugs typical to OpenGL programs at compile time.
2
Only the correct ways to use the API are exposed. Misuse of the API is simply made impossible.
2.2.4
Linearity
1
Branching, version-specific code must be eliminated as far as is possible. Code of this type is fragile, difficult to test, and usually incorrect.
2.2.5
Conspicuity of errors
1
Silent failure of programs is unacceptable. All errors that cannot be prevented statically must be loudly and immediately signalled at runtime.