- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
/*
Макрос генерирует внутренности функции-заглушки OpenGL.
*/
#define BWT_DECLARE_OPENGL_PROC_IMPL(PROC, PROC_TYPE, ...) \
static PROC_TYPE _##PROC = 0; \
\
if (_##PROC) \
return _##PROC(__VA_ARGS__); \
else \
{ \
_##PROC = TryToGetProcAddress<PROC_TYPE>(#PROC); return _##PROC(__VA_ARGS__); \
}
/*
Функция получает адрес функции, или возбуждает исключение, если адрес получить не удалось.
*/
template<typename proc_type>
proc_type TryToGetProcAddress(const char *proc_name) throw(error_type<VIDEO>)
{
proc_type address = reinterpret_cast<proc_type>(::SDL_GL_GetProcAddress(proc_name));
if (!address)
BWT_THROW_VIDEO_ERROR(UNDEFINED_ERROR, "OpenGL version does not supported");
return address;
}
GLAPI void APIENTRY glCullFace (GLenum mode)
{
BWT_DECLARE_OPENGL_PROC_IMPL(glCullFace, PFNGLCULLFACEPROC, mode);
}
...
KirAmp 15.10.2010 18:37 # −4
KirAmp 15.10.2010 18:48 # −1
koodeer 16.10.2010 07:59 # 0
rat4 16.10.2010 12:20 # 0
absolut 16.10.2010 13:13 # +3
ф1: уважаемая ф2, можно узнать ваш адрес ?
ф2: нет, я же чистая виртуальная функция ...
ф1: м-м-м ... жаль ... моё исключение уже так возбужденО ...
p.s. все персонажи вымышлены, любое сходство с реальными событиями и лицами случайно.
Stalker 16.10.2010 14:37 # +2
istem 16.10.2010 16:01 # 0
TheCalligrapher 16.10.2010 19:20 # −1
Т.е. код "не нужный" во многом, но не говнокод ни разу.