Eine andere möglichkeit?



  • Gibts hierfür noch ne andere methode:

    #include <sstream> 
    
    ... 
    
    std::ostringstream pfad_stream; 
    pfad_stream << "cd/background" << i << ".png"; 
    std::string pfad = pfad_stream.str();
    

    Ich bin n absoluter anfänger in C++. Es schon n bissel verwirrend wie so einfache dinge in VB:

    Pfad = "/cd/background" & i & ".png"
    

    in C++ solche Probleme verursachen können. Ich bezweifel ja nicht das der code da oben funzen würde, aber leider geht das nicht mit KOS für den dreamcast, und das Programm das ich schreib ist nun mal leider für die kiste. Hier mal der ganze code:

    //this is needed by KOS 
    #define _arch_dreamcast 
    
    /* Appwizard blank main template by Dovoto 
       Assumes you are using KOS 
    */ 
    
    #include <kos.h> 
    #include <png/png.h>
    #include <stdio.h>
    
    /* textures */ 
    pvr_ptr_t back_tex; 
    char *data; 
    
    /* init background */ 
    void back_init(char *background) 
    {  
        back_tex = pvr_mem_malloc(512*512*2); // 512*512 is the size of the png file  must be 
        png_to_texture(background, back_tex, PNG_NO_ALPHA);//no use of romsdisk virtural file system reads from the cd  you can do this with mostly any think  .    
    } 
    
    /* draw background */ 
    void draw_back(void) 
    { 
        pvr_poly_cxt_t cxt; 
        pvr_poly_hdr_t hdr; 
        pvr_vertex_t vert; 
    
        pvr_poly_cxt_txr(&cxt, PVR_LIST_OP_POLY, PVR_TXRFMT_RGB565, 512, 512, back_tex, PVR_FILTER_BILINEAR); 
        pvr_poly_compile(&hdr, &cxt); 
        pvr_prim(&hdr, sizeof(hdr)); 
    
        vert.argb = PVR_PACK_COLOR(1.0f, 1.0f, 1.0f, 1.0f);    
        vert.oargb = 0; 
        vert.flags = PVR_CMD_VERTEX; 
    
        vert.x = 1; 
        vert.y = 1; 
        vert.z = 1; 
        vert.u = 0.0; 
        vert.v = 0.0; 
        pvr_prim(&vert, sizeof(vert)); 
    
        vert.x = 640; 
        vert.y = 1; 
        vert.z = 1; 
        vert.u = 1.0; 
        vert.v = 0.0; 
        pvr_prim(&vert, sizeof(vert)); 
    
        vert.x = 1; 
        vert.y = 480; 
        vert.z = 1; 
        vert.u = 0.0; 
        vert.v = 1.0; 
        pvr_prim(&vert, sizeof(vert)); 
    
        vert.x = 640; 
        vert.y = 480; 
        vert.z = 1; 
        vert.u = 1.0; 
        vert.v = 1.0; 
        vert.flags = PVR_CMD_VERTEX_EOL; 
        pvr_prim(&vert, sizeof(vert)); 
    } 
    
    /* draw one frame */ 
    void draw_frame(void) 
    { 
        pvr_wait_ready(); 
        pvr_scene_begin(); 
    
        pvr_list_begin(PVR_LIST_OP_POLY); 
        draw_back(); 
    
        pvr_scene_finish(); 
    
    } 
    
    int main(void) 
    { 
       int i=0;
       int ii = 0;
       char *pfad;
        /* init kos  */ 
        pvr_init_defaults(); 
    
       /* Animation */ 
       while(i<8){ 
       i++;
       /* Hier soll mit i der Pfad für das Bild erstellt werden */
       back_init(pfad);
       while(ii<2){
    			ii++;
    			draw_frame();
    			}
    			ii = 0;
       } 
     return 0;
    }
    


  • Du könntest dir einfach eine int-to-string-Funktion schreiben. Hast du denn überhaupt std::string? Ansonsten wärst du im C-Forum vielleicht besser aufgehoben.



  • Keine ahnung ich glaub nicht, in nem DC Dev forum wurde darüber diskutiert. Hab zwar nicht ganz verstanden was die gemeint haben aber so weit ich das versteh ist das in KOS nicht enthalten. Da war die rede davon das man sprinf verwenden soll. Ist das damit möglich und wie muss das dann aussehen?



  • Ups sorry scheint doch drin zu sein, das steht in stdio.h

    /* KallistiOS 1.1.6
    
       stdio.h
       (c)2000-2002 Dan Potter
    
       $Id: stdio.h,v 1.4 2002/01/06 01:14:47 bardtx Exp $
    
    */
    
    #ifndef __STDIO_H
    #define __STDIO_H
    
    #include <sys/cdefs.h>
    __BEGIN_DECLS
    
    #include <unistd.h>
    #include <stdarg.h>
    #include <kos/fs.h>
    
    /* ANSI style wrappers for some of the fileio functions */
    #ifndef EOF
    #define EOF (-1)
    #endif
    
    typedef struct _FILE_t FILE;
    typedef off_t fpos_t;
    
    /* For ANSI compatability */
    #define stdin ( (FILE *)1 )
    #define stdout ( (FILE *)2 )
    #define stderr ( (FILE *)2 )
    
    void     clearerr(FILE *);
    int      fclose(FILE *);
    FILE    *fdopen(int, const char *);
    int      feof(FILE *);
    int      ferror(FILE *);
    int      fflush(FILE *);
    int      fgetc(FILE *);
    int      fgetpos(FILE *, fpos_t *);
    char    *fgets(char *, int, FILE *);
    int      fileno(FILE *);
    FILE    *fopen(const char *, const char *);
    int      fprintf(FILE *, const char *, ...);
    int      fputc(int, FILE *);
    int      fputs(const char *, FILE *);
    size_t   fread(void *, size_t, size_t, FILE *);
    FILE    *freopen(const char *, const char *, FILE *);
    int      fscanf(FILE *, const char *, ...);
    int      fseek(FILE *, long int, int);
    int      fseeko(FILE *, off_t, int);
    int      fsetpos(FILE *, const fpos_t *);
    long int ftell(FILE *);
    off_t    ftello(FILE *);
    size_t   fwrite(const void *, size_t, size_t, FILE *);
    int      getc(FILE *);
    int      getchar(void);
    char    *gets(char *);
    int      getw(FILE *);
    int      pclose(FILE *);
    void     perror(const char *);
    FILE    *popen(const char *, const char *);
    int      printf(const char *, ...);
    int      putc(int, FILE *);
    int      putchar(int);
    int      puts(const char *);
    int      putw(int, FILE *);
    int      remove(const char *);
    int      rename(const char *, const char *);
    void     rewind(FILE *);
    int      scanf(const char *, ...);
    void     setbuf(FILE *, char *);
    int      setvbuf(FILE *, char *, int, size_t);
    int      snprintf(char *, size_t, const char *, ...);
    int      sprintf(char *, const char *, ...);
    int      sscanf(const char *, const char *, ...);
    char    *tempnam(const char *, const char *);
    FILE    *tmpfile(void);
    char    *tmpnam(char *);
    int      ungetc(int, FILE *);
    int      vfprintf(FILE *, const char *, va_list);
    int      vprintf(const char *, va_list);
    int      vsnprintf(char *, size_t, const char *, va_list);
    int      vsprintf(char *, const char *, va_list);
    
    /* To make porting programs a bit easier.. WARNING: only works on GCC */
    #define fprintf(BLAGH, ARGS...) printf(ARGS)
    
    /* Kernel debugging printf; all output sent to this is filtered through
       a kernel log level check before actually being printed. This way, you
       can set the level of debug info you want to see (or want your users
       to see). */
    void dbglog(int level, const char *fmt, ...) __printflike(2, 3);
    
    /* Log levels for the above */
    #define DBG_DEAD	0		/* The system is dead */
    #define DBG_CRITICAL	1		/* A critical error message */
    #define DBG_ERROR	2		/* A normal error message */
    #define DBG_WARNING	3		/* Potential problem */
    #define DBG_NOTICE	4		/* Normal but significant */
    #define DBG_INFO	5		/* Informational messages */
    #define DBG_DEBUG	6		/* User debug messages */
    #define DBG_KDEBUG	7		/* Kernel debug messages */
    
    /* Set debug level */
    void dbglog_set_level(int level);
    
    __END_DECLS
    
    #endif	/* __STDIO_H */
    

Anmelden zum Antworten