Графика с использованием SDL. Урок 2. Загрузка и отображение изображений

Marius Andra, “GFX with SDL. Lesson 2: Loading and displaying images”, public translation into Russian from English More about this translation.

See also 116 similar translations

Translate into another language.

Participants

Denisss 703 points
fukanchik 462 points
algor_1 29 points
Join Translated.by to translate! If you already have a Translated.by account, please sign in.
If you do not want to register an account, you can sign in with OpenID.
Pages: ← previous Ctrl next
1 2 3 4

GFX with SDL. Lesson 2: Loading and displaying images

Графика с использованием SDL. Урок 2. Загрузка и отображение изображений

History of edits (Latest: Denisss 9 years, 3 months ago) §

— Я на неделю уезжаю, поэтому вычитку начну только на след. неделе. Большое спасибо! =) algor_1

Hello and welcome to this neat little tutorial, whose version number is one unit bigger than the last tutorial's! In this tutorial you will learn how to load and display images inside your SDL progams/games/demos/etc. In this tutorial I will go through the source code (almost) line-by-line, trying to explain what each part of the code does as we go along. The program we will make today is really simple: we draw a nice background and then a cube on it that you can move with the keyboard.

Добро пожаловать в это небольшой урок, чей номер на единицу больше номера предыдущего урока. В этом уроке вы узнаете про загрузку и вывод на экран изображений в ваших SDL приложениях/играх/демках/и т.д. Я построчно пройду по исходному коду и попытаюсь объяснить что означает каждая его часть. Сегодня мы будем делать действительно простую программу: рисовать замечательный фон, а затем на нем создадим куб, который можно двигать с помощью клавиатуры.

History of edits (Latest: Denisss 9 years, 3 months ago) §

We start by including 3 header files: stdio.h, stdlib.h and SDL.h. (stdlib.h is later used by the atexit() function)

Начнем с включения трех заголовочных файлов: stdio.h, stdlib.h и SDL.h (stdlib.h в дальнейшем используется функцией atexit()).

History of edits (Latest: fukanchik 7 years, 9 months ago) §

#include <stdio.h>

#include <stdio.h>

History of edits (Latest: Denisss 9 years, 3 months ago) §

#include <stdlib.h>

#include <stdlib.h>

History of edits (Latest: Denisss 9 years, 3 months ago) §

#include <SDL/SDL.h>

#include <SDL/SDL.h>

History of edits (Latest: Denisss 9 years, 3 months ago) §

After that we have 3 global SDL_Surface's. Global means that they can be used by all the functions in this source code file. To delcare something global it has to be at the top of the source code file, before the functions. And after the SDL_Surface's come 2 integers: xpos and ypos. They are used for the location of the box.

Далее мы объявляем три глобальные SDL_Surface. Глобальные значит, что они могут использоваться в любой функции данного исходного кода. Чтобы объявить глобальную переменную, она должна находиться в начале файла с исходным кодом. После SDL_Surface находятся еще две целочисленных переменных: xpos и ypos. Это координаты ящика.

History of edits (Latest: Denisss 9 years, 3 months ago) §

SDL_Surface *back;

SDL_Surface *back;

History of edits (Latest: algor_1 9 years, 3 months ago) §

SDL_Surface *image;

SDL_Surface *image;

History of edits (Latest: algor_1 9 years, 3 months ago) §

SDL_Surface *screen;

SDL_Surface *screen;

History of edits (Latest: algor_1 9 years, 3 months ago) §

int xpos=0,ypos=0;

int xpos=0,ypos=0;

History of edits (Latest: algor_1 9 years, 3 months ago) §

The InitImages function is used to load in all the images from the bitmap files (.bmp's) into SDL_Surfaces. InitImages() is later called from main(). Inside InitImages we use the SDL_LoadBMP function. SDL_LoadBMP takes a filename as it's parameter and returns the image data from the filename as a pointer to type SDL_Surface. This time we load 2 images: bg.bmp into the global SDL_Surface back that we will later use to draw the background. And image.bmp to the SDL_Surface image that we will later use to draw the box wannabe.

Функция InitImages применяется для загрузки изображений из .bmp файлов (растровые изображения) в SDL_Surfaces. Она вызывается непосредственно в функции main(). Внутри InitImages используется функция SDL_LoadBMP, которой передается имя файла в качестве параметра. Она возвращает указатель на тип SDL_Surface. Мы загружаем два изображения в глобальные переменные типа SDL_Surface: bg.bmp, которое будет использоваться в качестве фонового, загружаем в переменную back, а image.bmp - в переменную image, это будет ящик.

History of edits (Latest: Denisss 9 years, 3 months ago) §

int InitImages()

int InitImages()

History of edits (Latest: Denisss 9 years, 3 months ago) §

{

{

History of edits (Latest: Denisss 9 years, 3 months ago) §

back = SDL_LoadBMP("bg.bmp");

back = SDL_LoadBMP("bg.bmp");

History of edits (Latest: Denisss 9 years, 3 months ago) §

image = SDL_LoadBMP("image.bmp");

image = SDL_LoadBMP("image.bmp");

History of edits (Latest: Denisss 9 years, 3 months ago) §

return 0;

return 0;

History of edits (Latest: Denisss 9 years, 3 months ago) §

}

}

History of edits (Latest: Denisss 9 years, 3 months ago) §

Next come 2 functions that we use to blit the image onto the screen. Both functions are called DrawIMG. The first DrawIMG function takes the SDL_Surface to blit and the x, y of where to blit as it's parameters. We use the function SDL_BlitSurface() to blit the image onto the screen surface. Taken from the SDL docs the prototype for SDL_BlitSurface() is

Затем идут две функции, которые будут применяться для рисования изображения на экране. Обе функции названы DrawIMG. Первая получает в качестве параметров SDL_Surface для рисования и координаты х и у. Для рисования изображения на экранной поверхности применяется функция SDL_BlitSurface() . Описание функции:

History of edits (Latest: fukanchik 9 years, 2 months ago) §
Pages: ← previous Ctrl next
1 2 3 4