mirror of
https://github.com/mauiaaron/apple2.git
synced 2024-06-08 16:29:27 +00:00
Get Linux build working with OpenGL changes
This commit is contained in:
parent
69bd40216b
commit
ca29ec543d
26
Makefile.am
26
Makefile.am
|
@ -1,5 +1,5 @@
|
|||
|
||||
AM_CPPFLAGS = -Isrc
|
||||
AM_CPPFLAGS = -Isrc -DCONFIG_DATADIR=\"@datadir@\"
|
||||
AM_CPPFLAGS += -I../src # work around some bug in make distcheck
|
||||
AM_LFLAGS = -i
|
||||
#AM_COLOR_TESTS = no
|
||||
|
@ -37,7 +37,11 @@ INTERFACE_CLASSIC_SRC = \
|
|||
VIDEO_SRC = \
|
||||
src/video/xvideo.c \
|
||||
src/video/glvideo.c \
|
||||
src/video/glinput.c
|
||||
src/video/glinput.c \
|
||||
src/video_util/matrixUtil.c \
|
||||
src/video_util/modelUtil.c \
|
||||
src/video_util/sourceUtil.c \
|
||||
src/video_util/vectorUtil.c
|
||||
|
||||
AUDIO_SRC = \
|
||||
src/audio/soundcore.c src/audio/soundcore-openal.c src/audio/speaker.c \
|
||||
|
@ -119,10 +123,22 @@ testvm_DEPENDENCIES = @ASM_O@ @META_O@ @VIDEO_O@
|
|||
EXTRA_testvm_SOURCES = $(ASM_SRC_x86) $(VIDEO_SRC)
|
||||
|
||||
###############################################################################
|
||||
# Misc
|
||||
# Misc & Installation
|
||||
|
||||
# manpage
|
||||
man_MANS = docs/apple2ix.6
|
||||
|
||||
# shaders
|
||||
shadersdir = @datadir@/@PACKAGE@/shaders
|
||||
shaders_DATA = src/video/Basic.vsh src/video/Basic.fsh
|
||||
|
||||
# disk images
|
||||
disksdir = @datadir@/@PACKAGE@/disks
|
||||
disks_DATA = \
|
||||
disks/README disks/blank.dsk.gz disks/blank.nib.gz disks/etc.dsk.gz \
|
||||
disks/mystery.dsk.gz disks/speedtest.dsk.gz disks/speedtest.txt
|
||||
|
||||
# Extra distribution stuff
|
||||
EXTRA_DIST = reconf.sh configure README.debugger PROBLEMS .apple2 \
|
||||
\
|
||||
disks/README disks/blank.dsk.gz disks/blank.nib.gz disks/etc.dsk.gz \
|
||||
|
@ -131,6 +147,8 @@ EXTRA_DIST = reconf.sh configure README.debugger PROBLEMS .apple2 \
|
|||
docs/apple2ix.6 \
|
||||
\
|
||||
src/font.txt \
|
||||
src/x86/genglue
|
||||
src/x86/genglue \
|
||||
\
|
||||
src/video/Basic.vsh src/video/Basic.fsh
|
||||
|
||||
CLEANFILES = src/font.c src/rom.c src/meta/debug.c src/x86/glue.S
|
||||
|
|
|
@ -163,7 +163,8 @@ AC_ARG_ENABLE([opengl], AS_HELP_STRING([--disable-opengl], [Disable OpenGL video
|
|||
AC_SEARCH_LIBS(glewInit, [GLEW glew], [
|
||||
opengl_supported='yes'
|
||||
AC_DEFINE(VIDEO_OPENGL, 1, [Use OpenGL])
|
||||
VIDEO_O="src/video/glvideo.o src/video/glinput.o"
|
||||
AC_DEFINE(USE_GLUT, 1, [Use GLUT library])
|
||||
VIDEO_O="src/video/glvideo.o src/video/glinput.o src/video_util/matrixUtil.o src/video_util/modelUtil.o src/video_util/sourceUtil.o src/video_util/vectorUtil.o"
|
||||
AC_MSG_RESULT([Building emulator with OpenGL support, w00t!])
|
||||
], [
|
||||
AC_MSG_WARN([Did not find OpenGL GLEW library...])
|
||||
|
|
|
@ -689,7 +689,9 @@ typedef enum interface_enum_t {
|
|||
OPT_CALIBRATE,
|
||||
OPT_PATH,
|
||||
OPT_COLOR,
|
||||
#if !VIDEO_OPENGL
|
||||
OPT_VIDEO,
|
||||
#endif
|
||||
OPT_VOLUME,
|
||||
OPT_CAPS,
|
||||
|
||||
|
@ -812,9 +814,11 @@ void c_interface_parameters()
|
|||
(color_mode == COLOR_INTERP) ? "Interpolated" : "Black/White ");
|
||||
break;
|
||||
|
||||
#if !VIDEO_OPENGL
|
||||
case OPT_VIDEO:
|
||||
sprintf(temp, "%s", (a2_video_mode == VIDEO_1X) ? "1X " : (a2_video_mode == VIDEO_2X) ? "2X " : "Fullscreen");
|
||||
break;
|
||||
#endif
|
||||
|
||||
case OPT_JOYSTICK:
|
||||
snprintf(temp, TEMPSIZE, "%s", (joy_mode == JOY_KPAD) ? "Emulated on Keypad" :
|
||||
|
@ -987,6 +991,7 @@ void c_interface_parameters()
|
|||
}
|
||||
break;
|
||||
|
||||
#if !VIDEO_OPENGL
|
||||
case OPT_VIDEO:
|
||||
if (a2_video_mode == 1)
|
||||
{
|
||||
|
@ -998,6 +1003,7 @@ void c_interface_parameters()
|
|||
}
|
||||
video_set_mode(a2_video_mode);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case OPT_VOLUME:
|
||||
if (sound_volume > 0)
|
||||
|
@ -1091,6 +1097,7 @@ void c_interface_parameters()
|
|||
}
|
||||
break;
|
||||
|
||||
#if !VIDEO_OPENGL
|
||||
case OPT_VIDEO:
|
||||
if (a2_video_mode == NUM_VIDOPTS-1)
|
||||
{
|
||||
|
@ -1102,6 +1109,7 @@ void c_interface_parameters()
|
|||
}
|
||||
video_set_mode(a2_video_mode);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case OPT_VOLUME:
|
||||
sound_volume++;
|
||||
|
|
|
@ -468,7 +468,7 @@ static GLuint _build_program(demoSource *vertexSource, demoSource *fragmentSourc
|
|||
|
||||
static demoSource *_create_shader_source(const char *fileName) {
|
||||
demoSource *src = NULL;
|
||||
#ifdef __APPLE__
|
||||
#if defined(__APPLE__)
|
||||
CFBundleRef mainBundle = CFBundleGetMainBundle();
|
||||
CFStringRef fileString = CFStringCreateWithCString(/*allocator*/NULL, fileName, CFStringGetSystemEncoding());
|
||||
CFURLRef fileURL = CFBundleCopyResourceURL(mainBundle, fileString, NULL, NULL);
|
||||
|
@ -477,8 +477,17 @@ static demoSource *_create_shader_source(const char *fileName) {
|
|||
CFRELEASE(fileURL);
|
||||
src = srcLoadSource(CFStringGetCStringPtr(filePath, CFStringGetSystemEncoding()));
|
||||
CFRELEASE(filePath);
|
||||
#elif defined(CONFIG_DATADIR)
|
||||
char *filePath = NULL;
|
||||
asprintf(&filePath, "%s/%s/shaders/%s", CONFIG_DATADIR, PACKAGE_NAME, fileName);
|
||||
if (filePath) {
|
||||
src = srcLoadSource(filePath);
|
||||
free(filePath);
|
||||
} else {
|
||||
ERRLOG("OOPS Could not load shader from %s (%s)", filePath, fileName);
|
||||
}
|
||||
#else
|
||||
#error FIXME TODO need to leveage GNU build system install_dir or somesuch stuff ...
|
||||
#error need to specify a DATADIR for shader files, etc
|
||||
#endif
|
||||
return src;
|
||||
}
|
||||
|
@ -538,7 +547,7 @@ static void gldriver_init_common(void) {
|
|||
glEnable(GL_CULL_FACE);
|
||||
|
||||
// Always use this clear color
|
||||
glClearColor(0.5f, 0.4f, 0.5f, 1.0f);
|
||||
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
|
||||
// Draw our scene once without presenting the rendered image.
|
||||
// This is done in order to pre-warm OpenGL
|
||||
|
@ -548,6 +557,14 @@ static void gldriver_init_common(void) {
|
|||
|
||||
// Check for errors to make sure all of our setup went ok
|
||||
GL_ERRLOG("finished initialization");
|
||||
|
||||
#if !defined(__APPLE__)
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, defaultFBO);
|
||||
#endif
|
||||
GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
|
||||
if (status != GL_FRAMEBUFFER_COMPLETE) {
|
||||
ERRQUIT("framebuffer status: %04X", status);
|
||||
}
|
||||
}
|
||||
|
||||
static void gldriver_shutdown(void) {
|
||||
|
@ -632,6 +649,10 @@ static void gldriver_render(void) {
|
|||
|
||||
// Draw the CRT object
|
||||
glDrawElements(GL_TRIANGLES, crtNumElements, crtElementType, 0);
|
||||
|
||||
#if USE_GLUT
|
||||
glutSwapBuffers();
|
||||
#endif
|
||||
}
|
||||
|
||||
static void gldriver_reshape(int w, int h) {
|
||||
|
@ -667,7 +688,7 @@ static void gldriver_reshape(int w, int h) {
|
|||
}
|
||||
|
||||
#if USE_GLUT
|
||||
static void _init_with_glut(GLuint fbo) {
|
||||
static void gldriver_init_glut(GLuint fbo) {
|
||||
glutInit(&argc, argv);
|
||||
glutInitDisplayMode(/*GLUT_DOUBLE|*/GLUT_RGBA|GLUT_DEPTH);
|
||||
glutInitWindowSize(windowWidth, windowHeight);
|
||||
|
@ -705,7 +726,7 @@ void video_driver_init(void *fbo) {
|
|||
#if defined(__APPLE__)
|
||||
gldriver_init_common();
|
||||
#elif USE_GLUT
|
||||
gldriver_init_glut();
|
||||
gldriver_init_glut(fbo);
|
||||
#else
|
||||
#error no working codepaths
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue
Block a user