コード例 #1
0
ファイル: vidmode.c プロジェクト: beoran/alithia
int vid_init(void)
{
    int r = SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO|SDL_INIT_NOPARACHUTE);
    int width = arg_intval("-width", 800);
    int height = arg_intval("-height", 600);
    int fullscreen = arg_intval("-fullscreen", 0);
    int bpp = arg_intval("-bpp", 32);
    int flags = SDL_OPENGL|(fullscreen?SDL_FULLSCREEN:0);

    if (r < 0) return FALSE;

    vid_width = width;
    vid_height = height;
    vid_anisotropy = arg_intval("-anisotropy", 1);
    if (vid_anisotropy < 1) vid_anisotropy = 1;

    if (bpp == 32 || bpp == 24) {
        SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
        SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
        SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
        SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
        SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8);
        SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
    } else {
        SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
        SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 5);
        SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
        SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
        SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8);
        SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
    }

    if (!SDL_SetVideoMode(width, height, bpp, flags))
        if (!SDL_SetVideoMode(width, height, bpp, flags&(~SDL_FULLSCREEN)))
            return FALSE;

    if (!load_extensions())
        return FALSE;

    SDL_WM_SetCaption(GAME_TITLE, GAME_TITLE);
    SDL_WM_GrabInput(SDL_GRAB_ON);
    SDL_ShowCursor(0);
    SDL_EnableUNICODE(SDL_ENABLE);

    wh_ratio = (float)width/(float)height;
    hw_ratio = (float)height/(float)width;
    pixelw = 2.0/(float)width;
    pixelh = 2.0/(float)height;

    return TRUE;
}
コード例 #2
0
ファイル: addtaskwizard.cpp プロジェクト: BENASITO/qwinff
AddTaskWizard::AddTaskWizard(Presets *presets, QWidget *parent) :
    QWizard(parent),
    ui(new Ui::AddTaskWizard),
    m_presets(presets),
    m_current_param(new ConversionParameters)
{
    ui->setupUi(this);

    // setup signals/slots
    connect(ui->btnAdd, SIGNAL(clicked())
            , this, SLOT(slotAddFilesToList()));
    connect(ui->btnRemove, SIGNAL(clicked())
            , this, SLOT(slotRemoveFilesFromList()));
    connect(ui->cbExtension, SIGNAL(currentIndexChanged(int))
            , this, SLOT(slotExtensionSelected(int)));
    connect(ui->cbPreset, SIGNAL(currentIndexChanged(int))
            , this, SLOT(slotPresetSelected(int)));
    connect(ui->btnEditPreset, SIGNAL(clicked())
            , this, SLOT(slotEditPresetButton()));
    connect(ui->btnBrowseOutputPath, SIGNAL(clicked())
            , this, SLOT(slotBrowseOutputPathButton()));
    connect(this, SIGNAL(accepted())
            , this, SLOT(slotFinished()));

    connect(ui->rbSelectFolder, SIGNAL(toggled(bool))
            , ui->cbOutputPath, SLOT(setEnabled(bool)));
    connect(ui->rbSelectFolder, SIGNAL(toggled(bool))
            , ui->btnBrowseOutputPath, SLOT(setEnabled(bool)));
    connect(ui->rbNewFolder, SIGNAL(toggled(bool))
            , ui->txtNewFolderName, SLOT(setEnabled(bool)));
    ui->rbSelectFolder->setChecked(true); // trigger toggled() event
    ui->rbNewFolder->setChecked(true); // trigger toggled() event
    ui->rbSourceFolder->setChecked(true); // trigger toggled() event

    ui->lstFiles->setSelectionMode(QAbstractItemView::ExtendedSelection);

    load_extensions();

    ui->cbOutputPath->setEditable(true);

    load_settings();

    QSettings settings;
    // Load Geometry
    restoreGeometry(settings.value("addtaskwizard/geometry").toByteArray());

    // Hide "auto adjust bitrate" checkbox.
    ui->chkAutoAdjustBitrate->setVisible(false);
}
コード例 #3
0
ファイル: extensions.c プロジェクト: allefant/allegro
/* _al_ogl_manage_extensions:
 * This functions fills the extensions API table and extension list
 * structures and displays on the log file which extensions are available.
 */
void _al_ogl_manage_extensions(ALLEGRO_DISPLAY *gl_disp)
{
    //const GLubyte *buf;
#if defined ALLEGRO_MACOSX
    CFURLRef bundle_url;
#endif
    ALLEGRO_OGL_EXT_API *ext_api;
    ALLEGRO_OGL_EXT_LIST *ext_list;

    /* Print out OpenGL extensions
     * We should use glGetStringi(GL_EXTENSIONS, i) for OpenGL 3.0+
     * but it doesn't seem to work until later.
     */
    if (!_al_ogl_version_3_only(gl_disp->flags)) {
        ALLEGRO_DEBUG("OpenGL Extensions:\n");
        print_extensions((char const *)glGetString(GL_EXTENSIONS));
    }

    /* Print out GLU version */
    //buf = gluGetString(GLU_VERSION);
    //ALLEGRO_INFO("GLU Version : %s\n", buf);

#ifdef ALLEGRO_HAVE_DYNAMIC_LINK
    /* Get glXGetProcAddress entry */
    __libgl_handle = dlopen("libGL.so", RTLD_LAZY);
    if (__libgl_handle) {
        alXGetProcAddress = (GLXGETPROCADDRESSARBPROC) dlsym(__libgl_handle,
                            "glXGetProcAddressARB");
        if (!alXGetProcAddress) {
            alXGetProcAddress = (GLXGETPROCADDRESSARBPROC) dlsym(__libgl_handle,
                                "glXGetProcAddress");
            if (!alXGetProcAddress) {
                alXGetProcAddress = (GLXGETPROCADDRESSARBPROC) dlsym(__libgl_handle,
                                    "eglGetProcAddress");
            }
        }
    }
    else {
        ALLEGRO_WARN("Failed to dlopen libGL.so : %s\n", dlerror());
    }
    ALLEGRO_INFO("glXGetProcAddress Extension: %s\n",
                 alXGetProcAddress ? "Supported" : "Unsupported");
#elif defined ALLEGRO_UNIX
#ifdef ALLEGROGL_GLXGETPROCADDRESSARB
    ALLEGRO_INFO("glXGetProcAddressARB Extension: supported\n");
#else
    ALLEGRO_INFO("glXGetProcAddress Extension: supported\n");
#endif
#endif

#ifdef ALLEGRO_MACOSX
    bundle_url = CFURLCreateWithFileSystemPath(kCFAllocatorDefault,
                 CFSTR
                 ("/System/Library/Frameworks/OpenGL.framework"),
                 kCFURLPOSIXPathStyle, true);
    opengl_bundle_ref = CFBundleCreate(kCFAllocatorDefault, bundle_url);
    CFRelease(bundle_url);
#endif

#if defined ALLEGRO_UNIX && !defined ALLEGRO_EXCLUDE_GLX
    ALLEGRO_DEBUG("GLX Extensions:\n");
    ALLEGRO_SYSTEM_XGLX *glx_sys = (void*)al_get_system_driver();
    ALLEGRO_DISPLAY_XGLX *glx_disp = (void *)gl_disp;
    char const *ext = glXQueryExtensionsString(
                          glx_sys->gfxdisplay, glx_disp->xscreen);
    if (!ext) {
        /* work around driver bugs? */
        ext = "";
    }
    print_extensions(ext);
#endif

    fill_in_info_struct(glGetString(GL_RENDERER), &(gl_disp->ogl_extras->ogl_info));

    /* Create & load extension API table */
    ext_api = create_extension_api_table();
    load_extensions(ext_api);
    gl_disp->ogl_extras->extension_api = ext_api;

#if !defined ALLEGRO_IPHONE && !defined ALLEGRO_ANDROID
    /* Need that symbol already so can't wait until it is assigned later. */
    glGetStringi = ext_api->GetStringi;

    if (_al_ogl_version_3_only(gl_disp->flags)) {
        ALLEGRO_DEBUG("OpenGL Extensions:\n");
        print_extensions_3_0();
    }
#endif

    /* Create the list of supported extensions. */
    ext_list = create_extension_list();
    gl_disp->ogl_extras->extension_list = ext_list;

    /* Fill the list. */
#define AGL_EXT(name, ver) { \
      ext_list->ALLEGRO_GL_##name = \
         _ogl_is_extension_with_version_supported("GL_" #name, gl_disp, \
            _ALLEGRO_OPENGL_VERSION_##ver); \
   }
#include "allegro5/opengl/GLext/gl_ext_list.h"
#undef AGL_EXT

#ifdef ALLEGRO_UNIX
#define AGL_EXT(name, ver) { \
      ext_list->ALLEGRO_GLX_##name = \
         _ogl_is_extension_with_version_supported("GLX_" #name, gl_disp, \
            _ALLEGRO_OPENGL_VERSION_##ver); \
   }
#include "allegro5/opengl/GLext/glx_ext_list.h"
#undef AGL_EXT
#elif defined ALLEGRO_WINDOWS
#define AGL_EXT(name, ver) { \
      ext_list->ALLEGRO_WGL_##name = \
         _ogl_is_extension_with_version_supported("WGL_" #name, gl_disp, \
            _ALLEGRO_OPENGL_VERSION_##ver); \
   }
#include "allegro5/opengl/GLext/wgl_ext_list.h"
#undef AGL_EXT
#endif

    /* TODO: use these somewhere */
#if 0
    for (i = 0; i < 5; i++) {
        __allegro_gl_texture_read_format[i] = -1;
        __allegro_gl_texture_components[i] = GL_RGB;
    }
    __allegro_gl_texture_read_format[3] = GL_UNSIGNED_BYTE;
    __allegro_gl_texture_read_format[4] = GL_UNSIGNED_BYTE;
    __allegro_gl_texture_components[4] = GL_RGBA;
#endif /* #if 0 */

    /* Get max texture size */
    glGetIntegerv(GL_MAX_TEXTURE_SIZE,
                  (GLint *) & gl_disp->ogl_extras->ogl_info.max_texture_size);

    /* Note: Voodoo (even V5) don't seem to correctly support
     * packed pixel formats. Disabling them for those cards.
     */
    ext_list->ALLEGRO_GL_EXT_packed_pixels &= !gl_disp->ogl_extras->ogl_info.is_voodoo;


    if (ext_list->ALLEGRO_GL_EXT_packed_pixels) {

        ALLEGRO_INFO("Packed Pixels formats available\n");

        /* XXX On NV cards, we want to use BGRA instead of RGBA for speed */
        /* Fills the __allegro_gl_texture_format array */
        /* TODO: use these somewhere */
#if 0
        __allegro_gl_texture_read_format[0] = GL_UNSIGNED_BYTE_3_3_2;
        __allegro_gl_texture_read_format[1] = GL_UNSIGNED_SHORT_5_5_5_1;
        __allegro_gl_texture_read_format[2] = GL_UNSIGNED_SHORT_5_6_5;
#endif /* #if 0 */
    }

    /* NVidia and ATI cards expose OpenGL 2.0 but often don't accelerate
     * non-power-of-2 textures. This check is how you verify that NP2
     * textures are hardware accelerated or not.
     * We should clobber the NPOT support if it's not accelerated.
     */
    {
        const char *vendor = (const char *)glGetString(GL_VENDOR);
        if (strstr(vendor, "NVIDIA Corporation")) {
            if (!ext_list->ALLEGRO_GL_NV_fragment_program2
                    || !ext_list->ALLEGRO_GL_NV_vertex_program3) {
                ext_list->ALLEGRO_GL_ARB_texture_non_power_of_two = 0;
            }
        }
        else if (strstr(vendor, "ATI Technologies")) {
            if (_al_ogl_version_3_only(gl_disp->flags)) {
                /* Assume okay. */
            }
            else if (!strstr((const char *)glGetString(GL_EXTENSIONS),
                             "GL_ARB_texture_non_power_of_two")
                     && gl_disp->ogl_extras->ogl_info.version >= _ALLEGRO_OPENGL_VERSION_2_0) {
                ext_list->ALLEGRO_GL_ARB_texture_non_power_of_two = 0;
            }
        }
    }

    {
        int *s = gl_disp->extra_settings.settings;
        glGetIntegerv(GL_MAX_TEXTURE_SIZE, s + ALLEGRO_MAX_BITMAP_SIZE);

        if (gl_disp->ogl_extras->ogl_info.version >= _ALLEGRO_OPENGL_VERSION_2_0)
            s[ALLEGRO_SUPPORT_SEPARATE_ALPHA] = 1;

        s[ALLEGRO_SUPPORT_NPOT_BITMAP] =
            ext_list->ALLEGRO_GL_ARB_texture_non_power_of_two ||
            ext_list->ALLEGRO_GL_OES_texture_npot;
        ALLEGRO_INFO("Use of non-power-of-two textures %s.\n",
                     s[ALLEGRO_SUPPORT_NPOT_BITMAP] ? "enabled" : "disabled");
#if defined ALLEGRO_IPHONE || defined ALLEGRO_ANDROID
        if (gl_disp->flags & ALLEGRO_USE_PROGRAMMABLE_PIPELINE) {
            s[ALLEGRO_CAN_DRAW_INTO_BITMAP] = true;
        }
        else {
            s[ALLEGRO_CAN_DRAW_INTO_BITMAP] =
                ext_list->ALLEGRO_GL_OES_framebuffer_object;
        }
        ALLEGRO_INFO("Use of FBO to draw to textures %s.\n",
                     s[ALLEGRO_CAN_DRAW_INTO_BITMAP] ? "enabled" :
                     "disabled");
#else
        s[ALLEGRO_CAN_DRAW_INTO_BITMAP] =
            ext_list->ALLEGRO_GL_EXT_framebuffer_object;
        ALLEGRO_INFO("Use of FBO to draw to textures %s.\n",
                     s[ALLEGRO_CAN_DRAW_INTO_BITMAP] ? "enabled" :
                     "disabled");
#endif
    }
}