Exemplo n.º 1
0
void myinit(void)
{
     
    glClearColor(1, 1, 1, 1);
	glEnable(GL_DEPTH_TEST);
	glDepthFunc(GL_LESS);
	


    Image *image1 = loadTexture1();
	Image *image2 = loadTexture2();
	Image *image3 = loadTexture3();
    Image *image4 = loadTexture4();
    Image *image5 = loadTexture5();
    Image *image6 = loadTexture6();
    Image *image7 = loadTexture7();
    Image *image8 = loadTexture8();
    Image *image9 = loadTexture9();
    Image *image10 = loadTexture10();
    Image *image11 = loadTexture11();
    Image *image12 = loadTexture12();
    Image *image13 = loadTexture13();
    Image *image14 = loadTexture14();
    Image *image15 = loadTexture15();
 
	if (image1 == NULL) {
		printf("Image was not returned from loadTexture\n");
		exit(0);
	}
	if (image2 == NULL) {
		printf("Image was not returned from loadTexture\n");
		exit(0);
	}
	if (image3 == NULL) {
		printf("Image was not returned from loadTexture\n");
		exit(0);
	}
 	if (image4 == NULL) {
		printf("Image was not returned from loadTexture\n");
		exit(0);
	}  
	if (image5 == NULL) {
		printf("Image was not returned from loadTexture\n");
		exit(0);
	}  
		if (image6 == NULL) {
		printf("Image was not returned from loadTexture\n");
		exit(0);
	}  
	if (image7 == NULL) {
		printf("Image was not returned from loadTexture\n");
		exit(0);
	}
    if (image8 == NULL) {
		printf("Image was not returned from loadTexture\n");
		exit(0);
	}  
	if (image9 == NULL) {
		printf("Image was not returned from loadTexture\n");
		exit(0);
	}  
    if (image10 == NULL) {
		printf("Image was not returned from loadTexture\n");
		exit(0);
	}
    if (image11 == NULL) {
		printf("Image was not returned from loadTexture\n");
		exit(0);
	}
	 if (image12 == NULL) {
		printf("Image was not returned from loadTexture\n");
		exit(0);
	}
	if (image13 == NULL) {
		printf("Image was not returned from loadTexture\n");
		exit(0);
	}
	if (image14 == NULL) {
		printf("Image was not returned from loadTexture\n");
		exit(0);
	}
	if (image15 == NULL) {
		printf("Image was not returned from loadTexture\n");
		exit(0);
	}
  
  

	// Generate texture/ membuat texture
	
	glGenTextures(15,texture);
    
    //tekstur kayu lemari
	//binding texture untuk membuat texture 2D
	glBindTexture(GL_TEXTURE_2D, texture[1]);
	//menyesuaikan ukuran textur ketika image lebih besar dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
	//menyesuaikan ukuran textur ketika image lebih kecil dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
	glTexImage2D(GL_TEXTURE_2D, 0, 3, image1->sizeX, image1->sizeY, 0, GL_RGB,
			GL_UNSIGNED_BYTE, image1->data);

	//tekstur dinding
	//binding texture untuk membuat texture 2D
	glBindTexture(GL_TEXTURE_2D, texture[2]);
	//menyesuaikan ukuran textur ketika image lebih besar dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
	//menyesuaikan ukuran textur ketika image lebih kecil dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
	glTexImage2D(GL_TEXTURE_2D, 0, 3, image2->sizeX, image2->sizeY, 0, GL_RGB,
			GL_UNSIGNED_BYTE, image2->data);

	//tekstur selimut
	//binding texture untuk membuat texture 2D
	glBindTexture(GL_TEXTURE_2D, texture[3]);
	//menyesuaikan ukuran textur ketika image lebih besar dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
	//menyesuaikan ukuran textur ketika image lebih kecil dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
	glTexImage2D(GL_TEXTURE_2D, 0, 3, image3->sizeX, image3->sizeY, 0, GL_RGB,
			GL_UNSIGNED_BYTE, image3->data);

	//tekstur spray
	//binding texture untuk membuat texture 2D
	glBindTexture(GL_TEXTURE_2D, texture[4]);
	//menyesuaikan ukuran textur ketika image lebih besar dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
	//menyesuaikan ukuran textur ketika image lebih kecil dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
	glTexImage2D(GL_TEXTURE_2D, 0, 3, image4->sizeX, image4->sizeY, 0, GL_RGB,
			GL_UNSIGNED_BYTE, image4->data);
			
	//tekstur 5
	//binding texture untuk membuat texture 2D
	glBindTexture(GL_TEXTURE_2D, texture[5]);
	//menyesuaikan ukuran textur ketika image lebih besar dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
	//menyesuaikan ukuran textur ketika image lebih kecil dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
	glTexImage2D(GL_TEXTURE_2D, 0, 3, image5->sizeX, image5->sizeY, 0, GL_RGB,
			GL_UNSIGNED_BYTE, image5->data);
			
	//tekstur lukisan belakang
	//binding texture untuk membuat texture 2D
	glBindTexture(GL_TEXTURE_2D, texture[6]);
	//menyesuaikan ukuran textur ketika image lebih besar dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
	//menyesuaikan ukuran textur ketika image lebih kecil dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
	glTexImage2D(GL_TEXTURE_2D, 0, 3, image6->sizeX, image6->sizeY, 0, GL_RGB,
			GL_UNSIGNED_BYTE, image6->data);

    //tekstur jendela
	//binding texture untuk membuat texture 2D
	glBindTexture(GL_TEXTURE_2D, texture[7]);
	//menyesuaikan ukuran textur ketika image lebih besar dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
	//menyesuaikan ukuran textur ketika image lebih kecil dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
	glTexImage2D(GL_TEXTURE_2D, 0, 3, image7->sizeX, image7->sizeY, 0, GL_RGB,
			GL_UNSIGNED_BYTE, image7->data);

    //tekstur jam dinding
	//binding texture untuk membuat texture 2D
	glBindTexture(GL_TEXTURE_2D, texture[8]);
	//menyesuaikan ukuran textur ketika image lebih besar dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
	//menyesuaikan ukuran textur ketika image lebih kecil dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
	glTexImage2D(GL_TEXTURE_2D, 0, 3, image8->sizeX, image8->sizeY, 0, GL_RGB,
			GL_UNSIGNED_BYTE, image8->data);
    //tekstur kayu meja
	//binding texture untuk membuat texture 2D
	glBindTexture(GL_TEXTURE_2D, texture[9]);
	//menyesuaikan ukuran textur ketika image lebih besar dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
	//menyesuaikan ukuran textur ketika image lebih kecil dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
	glTexImage2D(GL_TEXTURE_2D, 0, 3, image9->sizeX, image9->sizeY, 0, GL_RGB,
			GL_UNSIGNED_BYTE, image9->data);

    //tekstur televisi
	//binding texture untuk membuat texture 2D
	glBindTexture(GL_TEXTURE_2D, texture[10]);
	//menyesuaikan ukuran textur ketika image lebih besar dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
	//menyesuaikan ukuran textur ketika image lebih kecil dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
	glTexImage2D(GL_TEXTURE_2D, 0, 3, image10->sizeX, image10->sizeY, 0, GL_RGB,
			GL_UNSIGNED_BYTE, image10->data);

    //tekstur karpet
	//binding texture untuk membuat texture 2D
	glBindTexture(GL_TEXTURE_2D, texture[11]);
	//menyesuaikan ukuran textur ketika image lebih besar dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
	//menyesuaikan ukuran textur ketika image lebih kecil dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
	glTexImage2D(GL_TEXTURE_2D, 0, 3, image11->sizeX, image11->sizeY, 0, GL_RGB,
			GL_UNSIGNED_BYTE, image11->data);
			
     	//tekstur tempat sampah
	//binding texture untuk membuat texture 2D
	glBindTexture(GL_TEXTURE_2D, texture[12]);
	//menyesuaikan ukuran textur ketika image lebih besar dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
	//menyesuaikan ukuran textur ketika image lebih kecil dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
	glTexImage2D(GL_TEXTURE_2D, 0, 3, image12->sizeX, image12->sizeY, 0, GL_RGB,
			GL_UNSIGNED_BYTE, image12->data);
            
            //texture lukisan
	glBindTexture(GL_TEXTURE_2D, texture[13]);
	//menyesuaikan ukuran textur ketika image lebih besar dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
	//menyesuaikan ukuran textur ketika image lebih kecil dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
	glTexImage2D(GL_TEXTURE_2D, 0, 3, image13->sizeX, image13->sizeY, 0, GL_RGB,
			GL_UNSIGNED_BYTE, image13->data);		

//texture sofa dan komputer
	glBindTexture(GL_TEXTURE_2D, texture[14]);
	//menyesuaikan ukuran textur ketika image lebih besar dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
	//menyesuaikan ukuran textur ketika image lebih kecil dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
	glTexImage2D(GL_TEXTURE_2D, 0, 3, image14->sizeX, image14->sizeY, 0, GL_RGB,
			GL_UNSIGNED_BYTE, image14->data);	
			//texture layar
	glBindTexture(GL_TEXTURE_2D, texture[15]);
	//menyesuaikan ukuran textur ketika image lebih besar dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); //
	//menyesuaikan ukuran textur ketika image lebih kecil dari texture
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); //
	glTexImage2D(GL_TEXTURE_2D, 0, 3, image15->sizeX, image15->sizeY, 0, GL_RGB,
			GL_UNSIGNED_BYTE, image15->data);

	glEnable(GL_TEXTURE_2D);	
	glShadeModel(GL_FLAT);
}
Exemplo n.º 2
0
/**
 * Entry point (main func)
 */
int main(int argc, char **argv) {

    // Init SDL + OpenGL
    if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTTHREAD) == -1) {
        return -1;
    }
    SDL_SetVideoMode(W, H, 16, SDL_OPENGL);
    glewInit();
    glEnable(GL_TEXTURE_2D);
    glEnable(GL_DEPTH_TEST);

    // Init Textures
    glGenTextures(1, &textureId);
    glBindTexture(GL_TEXTURE_2D, textureId);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glGenTextures(1, &textureId2);
    glBindTexture(GL_TEXTURE_2D, textureId2);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glGenTextures(1, &textureId3);
    glBindTexture(GL_TEXTURE_2D, textureId3);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

    // Init SDL_surfaces
    sdlStruct.sdlSurface = SDL_CreateRGBSurface(SDL_SWSURFACE, W, H, 16, 0xf800, 0x07e0, 0x001f, 0);
    sdlStruct.sdlMutex = SDL_CreateMutex();
    sdlStruct2.sdlSurface = SDL_CreateRGBSurface(SDL_SWSURFACE, W, H, 16, 0xf800, 0x07e0, 0x001f, 0);
    sdlStruct2.sdlMutex = SDL_CreateMutex();
    sdlStruct3.sdlSurface = SDL_CreateRGBSurface(SDL_SWSURFACE, W, H, 16, 0xf800, 0x07e0, 0x001f, 0);
    sdlStruct3.sdlMutex = SDL_CreateMutex();

    // Init LibVLC + media player
    const char *vlc_argv[] = {};
    int vlc_argc = sizeof(vlc_argv) / sizeof(*vlc_argv);
    libvlc_instance_t * libVlcInstance = libvlc_new(vlc_argc, vlc_argv);
    libvlc_media_t * media = libvlc_media_new_path(libVlcInstance, VIDEOFILE);
    libvlc_media_player_t * mediaPlayer = libvlc_media_player_new_from_media(media);
    libvlc_media_release(media);
    libvlc_release(libVlcInstance);

    libvlc_video_set_callbacks(mediaPlayer, lockfct, unlockfct, NULL, &sdlStruct);
    libvlc_video_set_format(mediaPlayer, "RV16", W, H, W*2);

    // Init LibVLC Round2
    libvlc_instance_t * libVlcInstance2 = libvlc_new(vlc_argc, vlc_argv);
    libvlc_media_t * media2 = libvlc_media_new_path(libVlcInstance2, VIDEOFILE2);
    libvlc_media_player_t * mediaPlayer2 = libvlc_media_player_new_from_media(media2);
    libvlc_media_release(media2);
    libvlc_release(libVlcInstance2);

    libvlc_video_set_callbacks(mediaPlayer2, lockfct2, unlockfct2, NULL, &sdlStruct2);
    libvlc_video_set_format(mediaPlayer2, "RV16", W, H, W*2);

    //Round 3
    libvlc_instance_t * libVlcInstance3 = libvlc_new(vlc_argc, vlc_argv);
    libvlc_media_t * media3 = libvlc_media_new_path(libVlcInstance3, VIDEOFILE3);
    libvlc_media_player_t * mediaPlayer3 = libvlc_media_player_new_from_media(media3);
    libvlc_media_release(media3);
    libvlc_release(libVlcInstance3);

    libvlc_video_set_callbacks(mediaPlayer3, lockfct3, unlockfct3, NULL, &sdlStruct3);
    libvlc_video_set_format(mediaPlayer3, "RV16", W, H, W*2);

    // Start reading the video
    libvlc_media_player_play(mediaPlayer);
    libvlc_media_player_play(mediaPlayer2);
    libvlc_media_player_play(mediaPlayer3);
    libvlc_state_t state = libvlc_media_player_get_state(mediaPlayer);

    while ((state != libvlc_Ended) && (state != libvlc_Error)) {
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);


        loadTexture(); // Loading the texture

        // Square
        glBegin(GL_QUADS);
        glTexCoord2d(0, 0);
        glVertex2f(-0.95, 0.00);
        glTexCoord2d(0, 1);
        glVertex2f(-0.95, 0.95);
        glTexCoord2d(1, 1);
        glVertex2f(0.00, 0.95);
        glTexCoord2d(1, 0);
        glVertex2f(0.00, 0.00);
        glEnd();

        loadTexture2();

        glBegin(GL_QUADS);
        glTexCoord2d(0, 0);
        glVertex2f(0.05, 0.00);
        glTexCoord2d(0, 1);
        glVertex2f(0.05, 0.95);
        glTexCoord2d(1, 1);
        glVertex2f(0.95, 0.95);
        glTexCoord2d(1, 0);
        glVertex2f(0.95, 0.00);
        glEnd();

        loadTexture3();

        glBegin(GL_QUADS);
        glTexCoord2d(0, 0);
        glVertex2f(-0.95, -0.95);
        glTexCoord2d(0, 1);
        glVertex2f(-0.95, -0.05);
        glTexCoord2d(1, 1);
        glVertex2f(0.00, -0.05);
        glTexCoord2d(1, 0);
        glVertex2f(0.0, -0.95);
        glEnd();

        glFlush();
        SDL_GL_SwapBuffers();
        SDL_Delay(10);
        state = libvlc_media_player_get_state(mediaPlayer);
    }

    // Frees
    libvlc_media_player_stop(mediaPlayer);
    libvlc_media_player_stop(mediaPlayer2);
    libvlc_media_player_stop(mediaPlayer3);
    libvlc_media_player_release(mediaPlayer);
    libvlc_media_player_release(mediaPlayer2);
    libvlc_media_player_release(mediaPlayer3);
    SDL_DestroyMutex(sdlStruct.sdlMutex);
    SDL_FreeSurface(sdlStruct.sdlSurface);
    SDL_DestroyMutex(sdlStruct2.sdlMutex);
    SDL_FreeSurface(sdlStruct2.sdlSurface);
    SDL_DestroyMutex(sdlStruct3.sdlMutex);
    SDL_FreeSurface(sdlStruct3.sdlSurface);

    SDL_Quit();
    return 0;
}