Progmar Marcin Załęczny

Język:
Na stronie używamy cookies. Korzystając z witryny wyrażasz zgodę na ich wykorzystywanie.      Zamknij

VGE Resources manager

System operacyjny: Ubuntu 20.04+

Program VGE Resources pozwala tworzyć i zarządzać zasobami: plikami graficznymi, tekstowymi, dźwiękowymi i binarnymi. Powstał z myślą o tworzeniu gier video, ale sprawdza się także w przypadku aplikacji desktopowych - wszędzie tam gdzie istnieje potrzeba spakowania plików zasobów do plików binarnych.

Do programu dołączona jest biblioteka umożliwiająca łatwe wczytywania zasobów w programach napisanych w C i C++.
Dodatkowo zawiera trzy przykłady jej użycia - pierwszy to aplikacja uruchamiana w terminalu, drugi to program w GTK+ 3.0 trzeci w Vulkan+XCB.

Nowości w wersji: v1.2

  • Możliwość podglądu (renderingu) plików modeli Wavefront *.obj i dodanie szeregu opcji wpływających na ten rendering.
  • Opcja automatycznego dodania do zasobów wszystkich plików powiązanych z danym modelem po wskazaniu pliku *.obj (plików materiału i tekstur).
  • Zapamietywanie przez aplikację położenia i rozmiaru okna głównego i przywracanie go po jej uruchomieniu.
  • Zapamiętywanie ostatnio wybranego katalogu i ustawianie go przy kolejnych otwarciach okienka dialogu wyboru plików.
  • Dodana w przykładach aplikacja renderująca obiekt w bibliotekach Gtk i OpenGL.
  • Dodany przykładowy plik zasobów z kilkoma modelami.
Dla Ubuntu 20.04 do 21.04
Dla Ubuntu 21.10+

Nowości w wersji: v1.1

  • Dodany podgląd wybranej czcionki.
  • Dodana możliwość odtworzenia nieskompresowanych plików *.wav

Na poniższym listingu przedstawiono najkrótsze możliwe użycie biblioteki. Linijki odnoszące się do funkcji ładowania i zwalniania zasobów zapisano drukiem pogrubionym.

#include <stdlib.h>
#include <stdio.h>
#include "../lib/vge-resources/include/vge-resources.h"

int main(int argc, char *argv[]) {
    char *buffer;
    size_t buffer_size;

    if (get_resource_by_name("resources.db", "test.txt", &buffer, &buffer_size, -1) == 0) {
        printf("Text from the resources: %s\n", buffer);
        printf("Returned size: %lu\n", buffer_size);
        printf("strlen of the text: %lu\n", strlen(buffer));
        printf("last byte: %d\n", buffer[buffer_size]);
        free(buffer);
    }

    return 0;
}

I poniżej przykład najprostszej aplikacji okienkowej:

#include <glib.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gtk/gtk.h>
#include "../lib/vge-resources/include/vge-resources.h"

int main(int argc, char *argv[]) {
    gchar *buffer;
    gsize buffer_size;
    GdkPixbufLoader *loader;
    GdkPixbuf *pixbuf;
    GtkWidget *window, *scrolled_window;
    GtkWidget *image;

    gtk_init (&argc, &argv);

    if (get_resource_by_name("resources_gtk.db", "mms_img31238.jpg", &buffer, &buffer_size, -1) == 0) {
        loader = gdk_pixbuf_loader_new();
        gdk_pixbuf_loader_write(loader, buffer, buffer_size, NULL);
        pixbuf = gdk_pixbuf_loader_get_pixbuf(loader);
        free(buffer);

        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_default_size(GTK_WINDOW(window), 900, 700);
        scrolled_window = gtk_scrolled_window_new(NULL, NULL);
        image = gtk_image_new_from_pixbuf(pixbuf);
        gtk_container_add(GTK_CONTAINER(window), scrolled_window);
        gtk_container_add(GTK_CONTAINER(scrolled_window), image);
        gtk_widget_show_all(GTK_WIDGET(window));
        g_signal_connect(window, "destroy", gtk_main_quit, NULL);
        gtk_main();
    }

    return 0;
}

Trzecim przykładem załączonym do archiwum z programem jest demonstracja animacji i użycia zasobów w aplikacji napisanej w bibliotece Vulkan. Ze względu na długi kod źródłowy nie zamieszczam go na tej podstronie.