Ejemplo n.º 1
0
unsigned int GLTexture::_Load(unsigned char* data)
{
  glGenTextures(1, &glTex);
  glBindTexture(GL_TEXTURE_2D, glTex);
  glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
  if(!data)
    glTexImage2D(GetGLType(), 0, 4, width, height, 0, GetGLFormat(), GL_UNSIGNED_BYTE, data);
  else
    gluBuild2DMipmaps(GetGLType(), 4, width, height, GetGLFormat(), GL_UNSIGNED_BYTE, data);

  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

  return true;
}
Ejemplo n.º 2
0
int main(int argc, char** argv)
{
    FILE *f = fopen("dgl.h", "w");
    int i = 0;

    SC_Open("GL.H");

    while(SC_ReadTokens())
    {
        SC_Find(false);

        if(!stricmp(sc_parser.token, "WINGDIAPI"))
        {
            GetGLType(&gldata[i].header);
            SC_Find(false);

            if(!stricmp(sc_parser.token, "APIENTRY"))
            {
                SC_Find(false);
                if(sc_parser.token[0] == 'g' && sc_parser.token[1] == 'l')
                {
                    int j = 0;

                    strcpy(gldata[i].name, sc_parser.token);

                    while(!strrchr(sc_parser.token, ';'))
                    {
                        if(GetGLType(&gldata[i].args[j]))
                            GetGLArg(&gldata[i].args[j]);
                        j++;
                    }

                    i++;
                }
            }
        }
    }

    fprintf(f, "//\n// Generated by dglmake\n//\n");
    fprintf(f, "#ifndef USE_DEBUG_GLFUNCS\n\n");

    SlapGLStuffToFile(f, i, false);
    fprintf(f, "\n#endif // USE_DEBUG_GLFUNCS\n\n");

    SC_Close();

    SlapGLExtensionsToFile(f, "GL_ARB_multitexture");
    SlapGLExtensionsToFile(f, "GL_EXT_compiled_vertex_array");
    SlapGLExtensionsToFile(f, "GL_EXT_multi_draw_arrays");
    SlapGLExtensionsToFile(f, "GL_EXT_fog_coord");
    SlapGLExtensionsToFile(f, "GL_ARB_vertex_buffer_object");
    SlapGLExtensionsToFile(f, "GL_ARB_texture_non_power_of_two");
    SlapGLExtensionsToFile(f, "GL_ARB_texture_env_combine");
    SlapGLExtensionsToFile(f, "GL_EXT_texture_env_combine");
    SlapGLExtensionsToFile(f, "GL_EXT_texture_filter_anisotropic");
    SlapGLExtensionsToFile(f, "GL_ARB_shader_objects");
    SlapGLExtensionsToFile(f, "GL_ARB_framebuffer_object");
    SlapGLExtensionsToFile(f, "GL_ARB_occlusion_query");
    SlapGLExtensionsToFile(f, "GL_EXT_texture_array");

    fclose(f);

    return 1;
}
Ejemplo n.º 3
0
void SlapGLExtensionsToFile(FILE* f, char* arbstring)
{
    int i = 0;
    int a = 0;
    int j;

    SC_Open("SDL_opengl.h");

    fprintf(f, "//\n// %s\n//\n", arbstring);

    while(SC_ReadTokens())
    {
        SC_Find(false);

        if(!strcmp(sc_parser.token, arbstring))
        {
            SC_Find(false);

            if(strcmp(sc_parser.token, "1"))
                continue;

            while(SC_ReadTokens())
            {
                SC_Find(false);

                if(!strcmp(sc_parser.token, "#endif"))
                {
                    int count;

                    count = i;
                    i = 0;

                    while(i < count)
                    {
                        SC_Find(false);

                        if(!strcmp(sc_parser.token, "(APIENTRYP"))
                        {
                            int j = 0;
                            int len;

                            SC_Find(false);

                            strcpy(gldata[i].extname, sc_parser.token);

                            len = strlen(gldata[i].extname);
                            gldata[i].extname[len - 1] = 0;

                            while(!strrchr(sc_parser.token, ';'))
                            {
                                if(GetGLType(&gldata[i].args[j]))
                                    GetGLArg(&gldata[i].args[j]);
                                j++;
                            }

                            i++;
                        }
                    }

                    break;
                }
                else
                {
                    if(!strcmp(sc_parser.token, "GLAPI"))
                    {
                        GetGLType(&gldata[i].header);
                        SC_Find(false);
                        SC_Find(false);

                        if(sc_parser.token[0] == 'g' && sc_parser.token[1] == 'l')
                        {
                            strcpy(gldata[i].name, sc_parser.token);
                            i++;
                        }
                    }
                }
            }
        }
    }

    fprintf(f, "extern bool has_%s;\n", arbstring);

    if(i > 0)
        fprintf(f, "\n");

    if(i > 0)
        fprintf(f, "#ifndef __IPHONEOS__\n");
    for(j = 0; j < i; j++)
    {
        fprintf(f, "typedef %s ", ReturnGLType(&gldata[j].header));
        if(gldata[j].header.pointer)
            fprintf(f, "*");

        fprintf(f, "(APIENTRYP %s) (", gldata[j].extname);

        a = 0;

        if(gldata[j].args[a].name[0] == 0)
            fprintf(f, "void");
        else
        {
            while(gldata[j].args[a].name[0] != 0)
            {
                if(a > 0)
                    fprintf(f, ", ");

                if(gldata[j].args[a].isconst)
                    fprintf(f, "const ");

                fprintf(f, "%s", ReturnGLType(&gldata[j].args[a]));
                if(gldata[j].args[a].pointer)
                    fprintf(f, "*");

                fprintf(f, " %s", gldata[j].args[a++].name);
            }
        }

        fprintf(f, ");\n");
    }
    if(i > 0)
        fprintf(f, "#endif // __IPHONEOS__\n");

    if(i > 0)
        fprintf(f, "\n");

    if(i > 0)
        fprintf(f, "#ifndef __IPHONEOS__\n");
    for(j = 0; j < i; j++)
    {
        fprintf(f, "extern %s _%s;\n", gldata[j].extname, gldata[j].name);
    }
    if(i > 0)
        fprintf(f, "#endif // __IPHONEOS__\n");

    fprintf(f, "\n");

    fprintf(f, "#ifndef __IPHONEOS__\n");
    fprintf(f, "#define %s_Define() \\\n", arbstring);
    fprintf(f, "bool has_%s = false;", arbstring);
    if(i > 0)
        fprintf(f, " \\\n");
    else
        fprintf(f, "\n");

    for(j = 0; j < i; j++)
    {
        fprintf(f, "%s _%s = NULL", gldata[j].extname, gldata[j].name);
        if(j < (i - 1))
            fprintf(f, "; \\\n");
        else
            fprintf(f, "\n");
    }
    fprintf(f, "#else\n");
    fprintf(f, "#define %s_Define() bool has_%s = false;\n", arbstring, arbstring);
    fprintf(f, "#endif // __IPHONEOS__\n");

    fprintf(f, "\n");

    fprintf(f, "#ifndef __IPHONEOS__\n");
    fprintf(f, "#define %s_Init() \\\n", arbstring);
    fprintf(f, "has_%s = GL_CheckExtension(\"%s\");", arbstring, arbstring);

    if(i > 0)
        fprintf(f, " \\\n");
    else
        fprintf(f, "\n");

    for(j = 0; j < i; j++)
    {
        fprintf(f, "_%s = (%s)GL_RegisterProc(\"%s\")", gldata[j].name, gldata[j].extname, gldata[j].name);
        if(j < (i - 1))
            fprintf(f, "; \\\n");
        else
            fprintf(f, "\n");
    }
    fprintf(f, "#else\n");
    fprintf(f, "#define %s_Init() has_%s = true;\n", arbstring, arbstring);
    fprintf(f, "#endif // __IPHONEOS__\n");

    fprintf(f, "\n");

    if(i > 0)
    {
        fprintf(f, "#ifndef USE_DEBUG_GLFUNCS\n\n");

        SlapGLStuffToFile(f, i, true);
        fprintf(f, "\n#endif // USE_DEBUG_GLFUNCS\n\n");
    }

    SC_Close();
}
Ejemplo n.º 4
0
int GetGLType(glinfo_t* info)
{
    char *temp;

    SC_Find(false);

    if(!strcmp(sc_parser.token, "(void);"))
        return 0;

    if(strchr(sc_parser.token, '('))
        temp = (sc_parser.token + 1);
    else
        temp = sc_parser.token;

    if(!strcmp(temp, "const"))
    {
        info->isconst = true;
        return GetGLType(info);
    }

    if(!strcmp(temp, "void"))
        info->type = 0;

    else if(!strcmp(temp, "GLenum"))
        info->type = 1;

    else if(!strcmp(temp, "GLboolean"))
        info->type = 2;

    else if(!strcmp(temp, "GLbitfield"))
        info->type = 3;

    else if(!strcmp(temp, "GLbyte"))
        info->type = 4;

    else if(!strcmp(temp, "GLshort"))
        info->type = 5;

    else if(!strcmp(temp, "GLint"))
        info->type = 6;

    else if(!strcmp(temp, "GLsizei"))
        info->type = 7;

    else if(!strcmp(temp, "GLubyte"))
        info->type = 8;

    else if(!strcmp(temp, "GLushort"))
        info->type = 9;

    else if(!strcmp(temp, "GLuint"))
        info->type = 10;

    else if(!strcmp(temp, "GLfloat"))
        info->type = 11;

    else if(!strcmp(temp, "GLclampf"))
        info->type = 12;

    else if(!strcmp(temp, "GLdouble"))
        info->type = 13;

    else if(!strcmp(temp, "GLclampd"))
        info->type = 14;

    else if(!strcmp(temp, "GLvoid"))
        info->type = 15;

    else if(!strcmp(temp, "GLintptrARB"))
        info->type = 16;

    else if(!strcmp(temp, "GLsizeiptrARB"))
        info->type = 17;

    else if(!strcmp(temp, "GLintptr"))
        info->type = 18;

    else if(!strcmp(temp, "GLsizeiptr"))
        info->type = 19;

    else if(!strcmp(temp, "GLhandleARB"))
        info->type = 20;

    else if(!strcmp(temp, "GLcharARB"))
        info->type = 21;

    return 1;
}