Exemplo n.º 1
0
HRESULT CDECL wined3d_texture_create_2d(struct wined3d_device *device, UINT width, UINT height,
                                        UINT level_count, DWORD usage, enum wined3d_format_id format_id, enum wined3d_pool pool, void *parent,
                                        const struct wined3d_parent_ops *parent_ops, struct wined3d_texture **texture)
{
    struct wined3d_texture *object;
    HRESULT hr;

    TRACE("device %p, width %u, height %u, level_count %u, usage %#x\n",
          device, width, height, level_count, usage);
    TRACE("format %s, pool %#x, parent %p, parent_ops %p, texture %p.\n",
          debug_d3dformat(format_id), pool, parent, parent_ops, texture);

    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
    if (!object)
    {
        ERR("Out of memory.\n");
        *texture = NULL;
        return WINED3DERR_OUTOFVIDEOMEMORY;
    }

    hr = texture_init(object, width, height, level_count,
                      device, usage, format_id, pool, parent, parent_ops);
    if (FAILED(hr))
    {
        WARN("Failed to initialize texture, returning %#x.\n", hr);
        HeapFree(GetProcessHeap(), 0, object);
        *texture = NULL;
        return hr;
    }

    TRACE("Created texture %p.\n", object);
    *texture = object;

    return WINED3D_OK;
}
Exemplo n.º 2
0
/*************
 * DESCRIPTION:   load texture
 * INPUT:         texture     texture
 * OUTPUT:        FALSE if failed else TRUE
 *************/
BOOL RPREVIEW_TEXTURE::Load(TEXTURE *texture)
{
#ifndef __AMIGA__
	INITPROC texture_init;
#endif // __AMIGA__

#if !defined(__MIXEDBINARY__) || defined(__PPC__)
#ifdef __AMIGA__
	Base = OpenLibrary(texture->GetName(), 0);
	if(!Base)
		return FALSE;
	TextureBase = Base;
#else // __AMIGA__
	if (!(hLib = LoadLibrary(texture->GetName())))
		return FALSE;
	if (!(texture_init = (INITPROC)GetProcAddress(hLib, "texture_init")))
		return FALSE;
#endif // __AMIGA__
	tinfo = texture_init();
#else
	tinfo = PPC_STUB(texture_init)(texture->GetName(), &Base);
#endif // __MIXEDBINARY__

	this->texture = (RAYSTORM_TEXTURE*)texture;
	return TRUE;
}
Exemplo n.º 3
0
void tilemap_init(void)
{
    texture_init();
    if (0 == shader)
        shader = build_shader_program("tilemap", tilemap_vertex_shader_src, tilemap_fragment_shader_src);
    ENSURE(shader);
    glGenBuffers(1, &a_vertices);
}
Exemplo n.º 4
0
extern "ASM" void *__saveds _68kStub_ppc_texture_init__PFP09IM_TTABLEjpj(register __a0 long *args)
{
	IM_TTABLE* (*texture_init)(LONG) = (IM_TTABLE* (*)(LONG))args[0];

	return texture_init(
		(LONG) args[1]
	);
}
Exemplo n.º 5
0
TEXTURE_INFO *stub_texture_init(char *name, struct Library **Base)
{
	*Base = OpenLibrary(name, 0);
	if(!Base)
		return NULL;
	TextureBase = *Base;

	return texture_init();
}
Exemplo n.º 6
0
/*************
 * DESCRIPTION:   load texture
 * INPUT:         texture     texture
 * OUTPUT:        FALSE if failed else TRUE
 *************/
BOOL IPREVIEW_TEXTURE::Load(TEXTURE *texture)
{
	/* Load Imagine texture  */
#ifdef __AMIGA__
	IM_TTABLE* (*texture_init)(LONG arg0);

	seglist = LoadSeg(texture->name);
	if(!seglist)
		return FALSE;

	*(ULONG*)(&texture_init) = 4*seglist+4;
#ifdef __PPC__
	ttable = ITextureInit(texture_init);
#else
	ttable = texture_init(0x60FFFF);
#endif
#else
	INQUIRETEXTURE InquireTexture;
	PREFS prefs;
	char szBuffer[256];

	prefs.id = ID_TXTP;
	if (prefs.GetPrefs())
		ExpandPath((char *)prefs.data, texture->name, szBuffer);
	else
		strcpy(szBuffer, texture->name);

	prefs.data = NULL; // VERY important !

	hInst = LoadLibrary(szBuffer);
	if (!hInst)
		return FALSE;

	InquireTexture = (INQUIRETEXTURE)GetProcAddress(hInst, "InquireTexture");
	if (!InquireTexture)
		return FALSE;

	ttable = InquireTexture(0x70, 0x1);
#endif

	if(!ttable)
		return FALSE;

	// copy parameters
	memcpy(params, ((IMAGINE_TEXTURE*)texture)->params, 16*sizeof(float));

	form.pos = pos;
	form.orient_x = orient_x;
	form.orient_y = orient_y;
	form.orient_z = orient_z;
	form.size = size;

	return TRUE;
}
Exemplo n.º 7
0
int view_load_media()
{
	int success = 1;

	texture_init(&digits_texture);

	if(!texture_load(&digits_texture, "digits.bmp")) {
		printf("Failed to load digits texture!\n");
		success = 0;
	}

	return success;
}
Exemplo n.º 8
0
static void update_variables(void)
{
   struct retro_variable var = {
      .key = "Hatari_resolution",
   };

   if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
   {
      char *pch;
      char str[100];
      snprintf(str, sizeof(str), "%s", var.value);
 
      pch = strtok(str, "x");
      if (pch)
         retrow = strtoul(pch, NULL, 0);
      pch = strtok(NULL, "x");
      if (pch)
         retroh = strtoul(pch, NULL, 0);

      fprintf(stderr, "[libretro-test]: Got size: %u x %u.\n", retrow, retroh);

      CROP_WIDTH =retrow;
      CROP_HEIGHT= (retroh-80);
      VIRTUAL_WIDTH = retrow;
      texture_init();
      //reset_screen();
   }

}

static void retro_wrap_emulator()
{    

   pre_main(RPATH);

   pauseg=-1;

   environ_cb(RETRO_ENVIRONMENT_SHUTDOWN, 0); 

   // Were done here
   co_switch(mainThread);

   // Dead emulator, but libco says not to return
   while(true)
   {
      LOGI("Running a dead emulator.");
      co_switch(mainThread);
   }
}
Exemplo n.º 9
0
void retro_init(void)
{    	
   const char *system_dir = NULL;

   if (environ_cb(RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY, &system_dir) && system_dir)
   {
      // if defined, use the system directory			
      retro_system_directory=system_dir;		
   }		   

   const char *content_dir = NULL;

   if (environ_cb(RETRO_ENVIRONMENT_GET_CONTENT_DIRECTORY, &content_dir) && content_dir)
   {
      // if defined, use the system directory			
      retro_content_directory=content_dir;		
   }			

   const char *save_dir = NULL;

   if (environ_cb(RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY, &save_dir) && save_dir)
   {
      // If save directory is defined use it, otherwise use system directory
      retro_save_directory = *save_dir ? save_dir : retro_system_directory;      
   }
   else
   {
      // make retro_save_directory the same in case RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY is not implemented by the frontend
      retro_save_directory=retro_system_directory;
   }

   if(retro_system_directory==NULL)sprintf(RETRO_DIR, "%s\0",".");
   else sprintf(RETRO_DIR, "%s\0", retro_system_directory);

   printf("Retro SYSTEM_DIRECTORY %s\n",retro_system_directory);
   printf("Retro SAVE_DIRECTORY %s\n",retro_save_directory);
   printf("Retro CONTENT_DIRECTORY %s\n",retro_content_directory);

   enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_RGB565;
   if (!environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt))
   {
      fprintf(stderr, "RGB565 is not supported.\n");
      exit(0);
   }

   Emu_init();
   texture_init();
}
Exemplo n.º 10
0
HRESULT CDECL wined3d_texture_create(struct wined3d_device *device, const struct wined3d_resource_desc *desc,
        UINT level_count, DWORD surface_flags, void *parent, const struct wined3d_parent_ops *parent_ops,
        struct wined3d_texture **texture)
{
    struct wined3d_texture *object;
    HRESULT hr;

    TRACE("device %p, desc %p, level_count %u, surface_flags %#x, parent %p, parent_ops %p, texture %p.\n",
            device, desc, level_count, surface_flags, parent, parent_ops, texture);

    if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
        return E_OUTOFMEMORY;

    switch (desc->resource_type)
    {
        case WINED3D_RTYPE_TEXTURE:
            hr = texture_init(object, desc, level_count, surface_flags, device, parent, parent_ops);
            break;

        case WINED3D_RTYPE_VOLUME_TEXTURE:
            hr = volumetexture_init(object, desc, level_count, device, parent, parent_ops);
            break;

        case WINED3D_RTYPE_CUBE_TEXTURE:
            hr = cubetexture_init(object, desc, level_count, surface_flags, device, parent, parent_ops);
            break;

        default:
            ERR("Invalid resource type %s.\n", debug_d3dresourcetype(desc->resource_type));
            hr = WINED3DERR_INVALIDCALL;
            break;
    }

    if (FAILED(hr))
    {
        WARN("Failed to initialize texture, returning %#x.\n", hr);
        HeapFree(GetProcessHeap(), 0, object);
        return hr;
    }

    TRACE("Created texture %p.\n", object);
    *texture = object;

    return WINED3D_OK;
}
Exemplo n.º 11
0
Arquivo: pixel.c Projeto: zhoukk/pixel
int pixel_init(lua_State *L) {
	luaL_checkversion(L);
	luaL_requiref(L, "pixel.framework", pixel_framework, 0);
	luaL_requiref(L, "pixel.texture", pixel_texture, 0);
	luaL_requiref(L, "pixel.shader", pixel_shader, 0);
	luaL_requiref(L, "pixel.renderbuffer", pixel_renderbuffer, 0);
	luaL_requiref(L, "pixel.matrix", pixel_matrix, 0);
	luaL_requiref(L, "pixel.color", pixel_color, 0);
	luaL_requiref(L, "pixel.geometry", pixel_geometry, 0);
	luaL_requiref(L, "pixel.sprite", pixel_sprite, 0);
	luaL_requiref(L, "pixel.spritepack", pixel_spritepack, 0);
	luaL_requiref(L, "pixel.particle", pixel_particle, 0);
	lua_settop(L, 0);
	shader_init();
	texture_init();
	label_init(0);
	return 0;
}
Exemplo n.º 12
0
/*************
 * DESCRIPTION:   Load hyper texture and init it
 * INPUT:         filename    texture filename
 *                path        texture path
 * OUTPUT:        ERR_NONE if ok, else error number
 *************/
int HYPER_TEXTURE::Load(RSICONTEXT *rc, char *filename, char *path)
{
	char buffer[256];
#ifndef __AMIGA__
	INITPROC texture_init;
#endif // __AMIGA__

	if(!ExpandPath(path,filename,buffer))
		return ERR_OPENTEXTUREFILE;

#ifdef __AMIGA__
	Base = OpenLibrary(buffer, 0);
	if(!Base)
		return ERR_OPENTEXTUREFILE;
	TextureBase = Base;
#else // __AMIGA__
	if (!(hLib = LoadLibrary(buffer)))
		return ERR_OPENTEXTUREFILE;
	if (!(texture_init = (INITPROC)GetProcAddress(hLib, "texture_init")))
		return ERR_OPENTEXTUREFILE;
#endif // __AMIGA__

	tinfo = texture_init();

	data = new UBYTE[tinfo->datasize];
	if(!data)
	{
		tinfo->cleanup(tinfo);
#ifdef __AMIGA__
		CloseLibrary(Base);
		Base = NULL;
#else // __AMIGA__
		FreeLibrary(hLib);
		hLib = NULL;
#endif // __AMIGA__
		return ERR_MEM;
	}

	// copy default parameters
	memcpy(data, tinfo->defaultdata, tinfo->datasize);

	return ERR_NONE;
}
Exemplo n.º 13
0
int fbo_create(fbo *fbo, unsigned int w, unsigned int h) {
    // Texture and Renderbuffer object (RBO)
    rbo_create(&fbo->rbo, w, h);
    texture_create(&fbo->tex);
    texture_init(&fbo->tex, 0, w, h);
    
    // Create FBO
    glGenFramebuffers(1, &fbo->id);
    glBindFramebuffer(GL_FRAMEBUFFER, fbo->id);
    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, fbo->tex.id, 0);
    glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, fbo->rbo.id);
    
    // Make sure everything worked.
    int status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
    if(status != GL_FRAMEBUFFER_COMPLETE) {
        PERROR("Unable to create fbo: %s.", fbo_get_status(status));
        return 1;
    }
    return 0;
}
Exemplo n.º 14
0
int font_load(font *font, const char* filename, unsigned int size) {
    sd_rgba_image *img;
    sd_font *sdfont;
    int pixsize;
    texture *tex;
    
    // Find vertical size
    switch(size) {
        case FONT_BIG: pixsize = 8; break;
        case FONT_SMALL: pixsize = 6; break;
        default:
            return 1;
    }
    
    // Open font file
    sdfont = sd_font_create();
    if(sd_font_load(sdfont, filename, pixsize)) {
        sd_font_delete(sdfont);
        return 2;
    }
    
    // Load into textures
    img = sd_rgba_image_create(pixsize, pixsize);
    for(int i = 0; i < 224; i++) {
        tex = malloc(sizeof(texture));
        sd_font_decode(sdfont, img, i, 0xFF, 0xFF, 0xFF);
        texture_create(tex);
        texture_init(tex, img->data, img->w, img->h);
        vector_append(&font->textures, &tex);
    }
    
    // Set font info vars
    font->w = pixsize;
    font->h = pixsize;
    font->size = size;
    
    // Free resources
    sd_rgba_image_delete(img);
    sd_font_delete(sdfont);
    return 0;
}
Exemplo n.º 15
0
int load_image( texture_image_t * image, int mipmaps ) //, float gamma )
{
	int format = 0;
	ILboolean rv;
	texture_init();
	ilGenImages(1, &image->id);
	ilBindImage(image->id);
	rv = ilLoadImage(image->path);
	if (rv == IL_false)
		return -1;
	if(mipmaps==0)
	{
		rv = iluBuildMipmaps();	
		if (rv == IL_false)
			return -1;
	}
	//else
	//{
	//	// TODO - use iluScale to ensure power of two
	//}
	//rv = iluGammaCorrect( gamma );
	//if (rv == IL_false)
	//	return -1;
	image->w = ilGetInteger(IL_IMAGE_WIDTH);
	image->h = ilGetInteger(IL_IMAGE_HEIGHT);
	format	 = ilGetInteger(IL_IMAGE_FORMAT);
	// by projectx convention
	// textures that we want to color key are rbga
	if(format == IL_RGBA)	
		image->colorkey = 1; // true
	else					
		image->colorkey = 0; // false
	image->size = image->w * image->h * IMAGE_COMPONENTS * sizeof(unsigned char);
	image->data = (ILubyte *)malloc(image->size);
	ilCopyPixels(0, 0, 0, image->w, image->h, 1, IL_RGBA, IL_UNSIGNED_BYTE, image->data);
	return 0;
}
Exemplo n.º 16
0
void retro_init(void)
{    	
   const char *system_dir = NULL;

   if (environ_cb(RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY, &system_dir) && system_dir)
   {
      // if defined, use the system directory			
      retro_system_directory=system_dir;		
   }		   

   const char *content_dir = NULL;

   if (environ_cb(RETRO_ENVIRONMENT_GET_CONTENT_DIRECTORY, &content_dir) && content_dir)
   {
      // if defined, use the system directory			
      retro_content_directory=content_dir;		
   }			

   const char *save_dir = NULL;

   if (environ_cb(RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY, &save_dir) && save_dir)
   {
      // If save directory is defined use it, otherwise use system directory
      retro_save_directory = *save_dir ? save_dir : retro_system_directory;      
   }
   else
   {
      // make retro_save_directory the same in case RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY is not implemented by the frontend
      retro_save_directory=retro_system_directory;
   }

   if(retro_system_directory==NULL)sprintf(RETRO_DIR, "%s\0",".");
   else sprintf(RETRO_DIR, "%s\0", retro_system_directory);

   printf("Retro SYSTEM_DIRECTORY %s\n",retro_system_directory);
   printf("Retro SAVE_DIRECTORY %s\n",retro_save_directory);
   printf("Retro CONTENT_DIRECTORY %s\n",retro_content_directory);

   enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_RGB565;
   if (!environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt))
   {
      fprintf(stderr, "RGB565 is not supported.\n");
      exit(0);
   }

	struct retro_input_descriptor inputDescriptors[] = {
		{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "A" },
		{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "B" },
		{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "X" },
		{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "Y" },
		{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Select" },
		{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" },
		{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "Right" },
		{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "Left" },
		{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "Up" },
		{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "Down" },
		{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "R" },
		{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "L" },
		{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2, "R2" },
		{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2, "L2" },
		{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R3, "R3" },
		{ 0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L3, "L3" }
	};
	environ_cb(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, &inputDescriptors);

   Emu_init();
   texture_init();
}
Exemplo n.º 17
0
init_all()
{
	u_long *dop;
	GsDOBJ2 *objp;	
	int     i;

	ResetGraph(0);	
	PadInit(0);	

	GsInitVcount();
	padd = 0;
	ismip = 0;

	GsInitGraph(320, 240, GsNONINTER | GsOFSGPU, 1, 0);
	GsDefDispBuff(0, 0, 0, 240);	
	GsInit3D();	

	Wot[0].length = OT_LENGTH;
	Wot[0].org = zsorttable[0];	

	Wot[1].length = OT_LENGTH;
	Wot[1].org = zsorttable[1];

	/*  座標定義 */
	GsInitCoordinate2(WORLD, &DWorld);
	PWorld.vx = 70*ONE/360; PWorld.vy = PWorld.vz = 0;
	DWorld.coord.t[2] = -400;

	/*  モデリングデータ読み込み */
	dop = (u_long *) MODEL_ADDR;
	dop++;
	GsMapModelingData(dop);
	dop++;
	Objnum = *dop;
	dop++; 
	for (i = 0; i < Objnum; i++)
		GsLinkObject4((u_long) dop, &object[i], i);
	for (i = 0, objp = object; i < Objnum; i++, objp++) {
		objp->coord2 = &DWorld;
		objp->attribute = 0;
	}

	/*  視点設定 */
	GsSetProjection(250);
	view.vpx = 0; view.vpy = 000; view.vpz = 400;
	view.vrx = 0; view.vry = 0; view.vrz = 0;
	view.rz = 0;
	view.super = WORLD;
	GsSetRefView2(&view);

	/*  平行光源設定 */
	pslt[0].vx = 0; pslt[0].vy = 0; pslt[0].vz = -100;
	pslt[0].r = 0xf0; pslt[0].g = 0xf0; pslt[0].b = 0xf0;
	GsSetFlatLight(0, &pslt[0]);

	pslt[1].vx = 0; pslt[1].vy = 100; pslt[1].vz = -100;
	pslt[1].r = 0xf0; pslt[1].g = 0xf0; pslt[1].b = 0xf0;
	GsSetFlatLight(1, &pslt[1]);

	pslt[2].vx = 0; pslt[2].vy = 100; pslt[2].vz = 0;
	pslt[2].r = 0x60; pslt[2].g = 0x60; pslt[2].b = 0x60;
	GsSetFlatLight(2, &pslt[2]);

	GsSetAmbient(0, 0, 0);
	GsSetLightMode(0);

	/* テクスチャデータの読み込み */
	texture_init(TEX_ADDR);
	texture_init(TEX_ADDR1);

	/* デバッグプリントの準備 */
	KanjiFntOpen(-120,-100,256,200,896,0,768,256,0,512);
}
Exemplo n.º 18
0
//extern void drawModelSetMax(void);
int glInit(void){
	cvar_register(&cvar_gl_MSAA_Samples);
	cvar_pset(&cvar_gl_MSAA_Samples, "0");
//	console_printf("cvar id is %i\n", cvar_gl_MSAA_Samples.myid);
//	console_printf("cvar name is %s\n", cvar_gl_MSAA_Samples.name);
//	console_printf("cvar value is %s\n", cvar_gl_MSAA_Samples.valuestring);
	glewExperimental = TRUE;
	GLenum glewError = glewInit();
	CHECKGLERROR
	if(glewError != GLEW_OK){
		console_printf("ERROR with the glew: %s\n", glewGetErrorString(glewError));
		return FALSE;
	}
	shader_init();
	CHECKGLERROR
	if(!shader_ok){
		//todo call some sort of shutdown of everything
		 return FALSE;
	}
	texture_init();
	CHECKGLERROR
	if(!texture_ok){
		//todo call some sort of shutdown of everything
		 return FALSE;
	}
	framebuffer_init();
	CHECKGLERROR
	if(!framebuffer_ok){
		//todo call some sort of shutdown of everything
		 return FALSE;
	}
	vbo_init();
	CHECKGLERROR
	if(!vbo_ok){
		return FALSE;
		//todo call some sort of shutdown of everything
	}
	ubo_init();
	CHECKGLERROR
	if(!ubo_ok){
		return FALSE;
		//todo call some sort of shutdown of everything
	}
	anim_init();
	CHECKGLERROR
	if(!anim_ok){
		//todo call some sort of shutdown of everything
		return FALSE;
	}
	model_init();
	CHECKGLERROR
	if(!model_ok){
		//todo call some sort of shutdown of everything
		 return FALSE;
	}
/*
	initParticleSystem(128);
	if(!particlesOK){
		//todo call some sort of shutdown of everything
		 return FALSE;
	}
*/
	light_init();
	CHECKGLERROR
	if(!light_ok){
		//todo call some sort of shutdown of everything
		return FALSE;
	}
	lighttile_init();
	CHECKGLERROR
	if(!lighttile_ok){
		//todo call some sort of shutdown of everything
		return FALSE;
	}
	viewport_init();
	CHECKGLERROR
	if(!viewport_ok){
		//todo call some sort of shutdown of everything
		return FALSE;
	}
	text_init();
	CHECKGLERROR
	if(!text_ok){
		//todo call some sort of shutdown of everything
		return FALSE;
	}
	rendermodel_init();
	CHECKGLERROR
	//todo errorcheck
	drawbb_init();
	CHECKGLERROR
	//todo errorcheck

	states_enableForce(GL_MULTISAMPLE);
	glClearDepth(1.0);
	glClearColor(0.0, 0.0, 0.0, 0.0);
	CHECKGLERROR
//	states_disableForce(GL_FOG);
	states_enableForce(GL_DEPTH_TEST);
	CHECKGLERROR
//	glDepthFunc(GL_LESS);
	states_depthFunc(GL_LESS);
	states_enableForce(GL_CULL_FACE);
	states_cullFace(GL_BACK);
//	states_depthMask(GL_TRUE);

	int maxSamples = 0, maxIntSamples = 0, maxColorTextureSamples = 0, maxDepthTextureSamples = 0;
	glGetIntegerv(GL_MAX_SAMPLES, &maxSamples);
	glGetIntegerv(GL_MAX_INTEGER_SAMPLES, &maxIntSamples);
	glGetIntegerv(GL_MAX_COLOR_TEXTURE_SAMPLES, &maxColorTextureSamples);
	glGetIntegerv(GL_MAX_DEPTH_TEXTURE_SAMPLES, &maxDepthTextureSamples);
	maxMSAASamples = maxSamples;
	if(maxIntSamples < maxMSAASamples) maxMSAASamples = maxIntSamples;
	if(maxColorTextureSamples < maxMSAASamples) maxMSAASamples = maxColorTextureSamples;
	if(maxDepthTextureSamples < maxMSAASamples) maxMSAASamples = maxDepthTextureSamples;
	console_printf("Max multisample samples: %i\n", maxMSAASamples);


	cam = createAndAddViewportRPOINT("cam", 1);
	camid = cam->myid;
	cam->outfbid = findFramebufferByNameRINT("screen");

	unsigned char dflags[] = {3, 7, 3};
//	unsigned char drb = FRAMEBUFFERRBFLAGSDEPTH| 2;
	unsigned char drb = FRAMEBUFFERRBFLAGSDEPTH;
	unsigned char dcount = 3;
	cam->dfbid = createAndAddFramebufferRINT("screend", dcount, drb, dflags);
	resizeViewport(cam, 800, 600);
	screenWidth = 800;
	screenHeight = 600;

	glGenBuffers(1, &instancevbo);
	glGenBuffers(1, &instancevbo2);

	//temporary
	CHECKGLERROR
	vbo_t * tvbo = createAndAddVBORPOINT("text", 2);
	textvbo = tvbo->myid;
	textshaderid = shader_createAndAddRINT("text");
	fsblendshaderid = shader_createAndAddRINT("fsblend");
	depthonlyid = shader_createAndAddRINT("depthmodel");
	forwardmodelid = shader_createAndAddRINT("forwardmodel");
	fsquadmodel = model_findByNameRINT("fsquad");

	readyRenderQueueBuffers();



	return TRUE; // so far so good
}
Exemplo n.º 19
0
/*************
 * DESCRIPTION:   Load Imagine texture and init it
 * INPUT:         filename    texture filename
 *                path        texture path
 * OUTPUT:        ERR_NONE if ok, else error number
 *************/
int IMAGINE_TEXTURE::Load(RSICONTEXT *rc, char *filename, char *path)
{
#ifdef __AMIGA__
	IM_TTABLE* (*texture_init)(LONG arg0);
#endif // __AMIGA__
	char buffer[256];

	texture = rc->text_root->FindIMTexture(filename);
	if(!texture)
	{
		/* don't found the texture => load it again */
		texture = new IM_TEXT;
		if(!texture)
			return ERR_MEM;

		/* Load Imagine texture  */
		if(!ExpandPath(path,filename,buffer))
		{
			delete texture;
			return ERR_OPENTEXTUREFILE;
		}
#ifdef __AMIGA__
		texture->seglist = LoadSeg(buffer);
		if(!texture->seglist)
		{
			delete texture;
			return ERR_OPENTEXTUREFILE;
		}

		*(ULONG*)(&texture_init) = 4*texture->seglist+4;
#ifdef __PPC__
		texture->ttable = ppc_texture_init(texture_init, 0x60FFFF);
#else
		texture->ttable = texture_init(0x60FFFF);
#endif // __PPC__
#else
		texture->ttable = NULL;

		INQUIRETEXTURE InquireTexture;

		texture->hInst = LoadLibrary(buffer);
		if (!texture->hInst)
		{
			delete texture;
			return ERR_INITTEXTURE;
		}

		InquireTexture = (INQUIRETEXTURE)GetProcAddress(texture->hInst, "InquireTexture");
		if (!InquireTexture)
		{
			delete texture;
			return ERR_INITTEXTURE;
		}

		texture->ttable = InquireTexture(0x70, 0x1);
#endif
		if(!texture->ttable)
		{
#ifndef __WATCOMC__
			delete texture;
#endif
			return ERR_INITTEXTURE;
		}

		texture->name = new char[strlen(filename)+1];
		if(!texture->name)
		{
			delete texture;
			return ERR_MEM;
		}
		strcpy(texture->name,filename);

		texture->Insert(rc);
	}

	/* Copy default parameters */
	memcpy(param, texture->ttable->params, 16*sizeof(float));
	/* Copy default geometry */
	memcpy(&pos, texture->ttable->tform, 5*sizeof(VECTOR));

	return ERR_NONE;
}
Exemplo n.º 20
0
void game_font_init() {

    DEBUG30(":: font init start");

    float scale = 1.0;

    int seg;
    int ch;
    int ch_bit;

//  // FAT FONT #1 (OK)
//    float scales[4] = { 0.4, 0.6, 0.2, 2 }; // 2,1,1,1
//    float pows[4] = { 15.0, 19.0, 200.0, 22.0 };
//    float ks1[4] = { 1.2, 1.0, 1.2, 0.90 }; // 0.75 straight
//    float ks2[4] = { -1.0, -1.0, -1.0, -1.0 };
//    float pows1[4] = { 1.0, 0.79, 1.0, 1.0 };
//    float pows2[4] = { 1.0, 0.79, 1.0, 1.0 };
//    float clamp1[4] = { 0.8, 0.75, 0.65, 0.87 }; // 0.8 to 0.86
//    float clamp2[4] = { 0.85, 0.85, 0.85, 0.92 };
//    float radiuses[4] = { 1.0, 1.1, 1.2, 0.87 };
    
    
    float scales[4] = { 0.4, 0.6, 0.2, 2 }; // 2,1,1,1
    //float pows[4] = { 45.0, 100.0, 200.0, 22.0 };
    float pows[4] = { 15.0, 15.0, 15.0, 22.0 };
    float ks1[4] = { 1.0, 1.2, 1.2, 0.90 }; // 0.75 straight
    float ks2[4] = { -1.0, -1.0, -1.0, -1.0 };
    float pows1[4] = { 1.3, 1.0, 1.0, 1.0 };
    float pows2[4] = { 1.2,  0.9, 1.0, 1.0 };
    float clamp1[4] = { 0.7, 0.79, 0.65, 0.87 }; // 0.8 to 0.86
    float clamp2[4] = { 0.9, 0.85, 0.85, 0.92 };
    float radiuses[4] = { 0.93, 0.93, 1.2, 0.87 };
    
    float colors_r[4] = { 1.0, 0.3, 1.0, 0.3 };
    float colors_g[4] = { 1.0, 0.6, 1.0, 0.6 };
    float colors_b[4] = { 1.0, 1.0, 1.0, 0.9 };
    // 1: 0.5, 0.74, 0.79

    DEBUG20(":: font init label-a");

    int font_index = 0;
    int font_index_color = 0;
    
    for (font_index_color = 0; font_index_color < FONTS_COUNT; font_index_color++) {
            
        font_index = font_index_color % 3;

        DEBUG30f(":: font init label-b (font index %d) \n", font_index);

        scale = scales[font_index];

        rs_gen_reg.cell_scale = scale;

        int char_tex_size = scale*32;
        
//        DEBUG10f("char_tex_size %d \n", char_tex_size);
        
        rs_gen_init(97, char_tex_size);

        for (seg = 0; seg < 32; seg++) {
            rs_gen_func_cell(seg, 1, 2, &pp_seg[8*seg], ks1[font_index], pows1[font_index], ks2[font_index], pows2[font_index], 0.0, 0.0);
            //rs_gen_func_cell(seg, 1, 2, &pp_seg[8*seg], 1.2, 1.0, -1.0, 1.0, 0.0, 0.0);
            //rs_gen_func_cell(seg, 1, 2, &pp_seg[8*seg], 0.48450032, 1.0, -1.0, 2.20, 0.0, 0.0); // toon
            rs_gen_func_normalize(seg, 0.0, 1.0); // 0.1 to 1.0

            rs_gen_func_clamp(seg, clamp1[font_index], clamp2[font_index]); //  0.8, 0.86); // toon 0.775, 0.839889
            rs_gen_func_normalize(seg, 0.0, 1.0); // 0.1 to 1.0

            rs_gen_func_set(96, 0.0);
            rs_gen_func_radial(96, (float)pp_seg[8*seg + 4]/32.0, (float)pp_seg[8*seg + 5]/32.0, (float)pp_seg[8*seg + 6]/32.0*radiuses[font_index], 1.0, pows[font_index]);
            rs_gen_func_mult(seg, seg, 96);
        };



        for (ch = 0; ch < 64; ch++) {
            rs_gen_func_set(32+ch, 0.0);
            for (ch_bit = 0; ch_bit < 32; ch_bit++) {
                if ( (1<<ch_bit) & (ch_seg[ch]) ) {
                    rs_gen_func_add_lerped(32+ch, 32+ch, ch_bit, 1.0, 1.0);
                }
            }
            rs_gen_func_clamp(32+ch, (ch+ch/8)%2 ? 0.0 : 0.0, 1.0);
    //        rs_gen_func_set(32+ch, (ch+ch/8)%2 ? 0.5 : 0.0);
    
            rs_gen_tex_out_rgba_set(0.0, 0.0, 0.0, 0.0);
            rs_gen_tex_out_rgba(32+ch, 32+ch, 32+ch, 32+ch, colors_b[font_index_color], colors_g[font_index_color], colors_r[font_index_color], 1.0);
            
            texture_init(&game.tex_font[font_index_color*64 + ch], char_tex_size, char_tex_size);
            memcpy(game.tex_font[font_index_color*64 + ch].data, rs_gen_reg.tex_out, char_tex_size*char_tex_size*4 );
    
        }
        
        
        
        /*

        float *fontdata = malloc(256*scale*256*scale*4);

        int i, j, k;
        for (i = 0; i < 8; i++) {
            for (j = 0; j < 8; j++) {
                for (k = 0; k < 32*scale; k++) {
                    memcpy( &(fontdata[i*256*(32*scale)*scale + k*256*scale + (j)*(32*scale)]), &(rs_gen_reg.tex[k*(32*scale) + (32+j+i*8)*(32*scale)*(32*scale)] ), 32*4*scale );
                };
            };
        };

        rs_gen_term();

        int font_tex_size = 256*scale;
        rs_gen_init(2, font_tex_size);
        memcpy( rs_gen_reg.tex, fontdata, 256*256 * 4 *scale*scale);
        rs_gen_func_set(1, 1.0);
        rs_gen_tex_out_rgba_set(0.0, 0.0, 0.0, 0.0);
        rs_gen_tex_out_rgba(1, 1, 1, 0, 1.0, 1.0, 1.0, 1.0);
        
        //game.font_texture[font_index] = rs_tx_create_from_data(font_tex_size, font_tex_size, 4, 1, 0, rs_gen_reg.tex_out);
        game_loader_create_texture( &(game.font_texture[font_index]), font_tex_size, font_tex_size, 4, 1, 0, rs_gen_reg.tex_out );
        

        save_image(0, rs_gen_reg.tex_out, 256*scale, 256*scale, 4);
        
        */

        rs_gen_term();

//        free(fontdata);  
//        
//        game.loader_progress = font_index+2;

    };

    rs_gen_reg.cell_scale = 1; 

};