Hi Gamepedia users and contributors! Please complete this survey to help us learn how to better meet your needs in the future. We have one for editors and readers. This should only take about 7 minutes!

OpenComputers/GPU API

Материал из Minecraft Wiki
Перейти к: навигация, поиск

Этот интерфейс предоставляет расширенную функциональность видеокарт.

Для простых программ будет достаточно Term API.


Название компонента: gpu.


  • bind(address: string): boolean[, string]

Связывает видеокарту с монитором (который задан адресом).

Возвращает true или false, в зависимости от успеха.

Одна видеокарта может работать только с одним монитором одновременно. Все операции производимые на видеокарте, будут отображаться на мониторе, связанном с ней. Если вы хотите выводить изображение на несколько мониторов, подключите с своему компьютеру несколько видеокарт.


  • getScreen():string

Возвращает адрес экрана, к которому привязана видеокарта.

Примечание: начиная с версии OpenComputers 1.3.2.


  • getBackground(): number, boolean

Возвращает текущий цвет фона. Этот применяется ко всем "пикселям", которые изменяются другими операторами.

Первое возвращаемое значение — RGB цвет в шестнадцатеричном формате, т.е. 0xRRGGBB. Такой формат используется мониторами и видеокартами вне зависимости от уровня и глубины цвета.

Второе значение показывает в каком формате представлен цвет (true - в виде номера в палитре, false - в виде числа RGB)


  • setBackground(color: number[, isPaletteIndex: boolean]): number[, index]

Устанавливает новый цвет фона. Возвращаемое значение — старый цвет, в том виде, в каком он был установлен (т.е. не сжатый до цветовой глубины экрана/видекарты).

Если цвет принадлежал палитре, второе возвращаемое значение будет индексом этого цвета в палитре. Иначе - nil.

Функция работает с RGB цветом в шестнадцатеричном формате, т.е. 0xRRGGBB. Такой формат используется мониторами и видеокартами вне зависимости от уровня и глубины цвета.


  • getForeground(): number, boolean

Как getBackground, только для основного цвета.


  • setForeground(color: number[, isPaletteIndex: boolean]): number[, index]

Как setBackground, только для основного цвета.


  • setPaletteColor(index: number, value: number): number

Устанавливает RGB цвет value в палитру по индексу index.


  • getPaletteColor(index: number): number

Возвращает цвет палитры по заданному индексу.


  • maxDepth(): number

Возвращает максимальную глубину цвета, которая поддерживается видеокартой и монитором (одновременно).


  • getDepth(): number

Текущая глубина цвета видеокарты/монитора в битах. Может быть равна 1, 4 или 8.


  • setDepth(bit: number): boolean

Устанавливает новую глубину цвета. Это значение не может быть больше максимально поддерживаемого экраном/видеокартой (maxDepth). Значение большее, или некорректное вызовет ошибку.

Возвращает true или false, в зависимости от успеха.


  • maxResolution(): number, number

Возвращает максимальное разрешение, поддерживаемое видеокартой и монитором, с которым она связана.


  • getResolution(): number, number

Возвращает текущее разрешение.


  • setResolution(width: number, height: number): boolean

Задает новое разрешение. Разрешение не может быть больше, чем максимальное поддерживаемое экраном и видеокартой (maxResolution). Значение большее, или некорректное вызовет ошибку.

Возвращает true или false, в зависимости от успеха.


  • getSize(): number, number

Возвращает размер мультиблочного экрана, в блоках. Для простого экрана или робота это будет (1, 1).

Внимание! Функция устарела. Используйте screen.getAspectRatio() вместо нее.


  • get(x: number, y: number): string, number, number, number or nil, number or nil

Возвращает символ, который отображен по заданным координатам. Второе и третье значения - основной цвет, и цвет фона соответственно, в виде RGB значений. Если это цвета палитры, то четвертое и пятое значения будут содержать их индексы. Иначе - они будут пусты (nil).


  • set(x: number, y: number, value: string[, vertical:boolean]): boolean

Пишет строку на экран, начиная в заданных координатах. Функция просто копирует строку в буфер видеокарты в виде символьной последовательности. Т.е. если строка содержит символы переносов, они будут просто отображены на дисплее как специальные символы. Строка не будет отображена в несколько линий.

Возвращает true или false, в зависимости от успеха.

Необязательный четвертый параметр позволяет вывести строку вертикально, если он будет равен true.


  • copy(x: number, y: number, width: number, height: number, tx: number, ty: number): boolean

Копирует фрагмент экранного буфера в другое место. Копируемый участок задан параметрами x, y, width и height. Место, куда он будет скопирован определяется как x + tx, y + ty, width и height.

Возвращает true или false, в зависимости от успеха.


  • fill(x: number, y: number, width: number, height: number, char: string): boolean

Заполняет прямоугольник экранного буфера заданным символом. Прямоугольник задается параметрами x, y, width и height.

Параметр char должен содержать один символ.

Функция возвращает true или false, в зависимости от успеха.

Примечание: заполнение экрана символами пробела (' ') обычно тратит меньше энергии, т.к. это операция "очистки" экрана. (См. файл конфигурации).

Пример программы[править | править код]

local component = require("component")
local gpu = component.gpu -- получаем прокси видеокарты
local w, h = gpu.getResolution()
gpu.fill(1, 1, w, h, " ") -- очищаем экран
gpu.setForeground(0x000000)
gpu.setBackground(0xFFFFFF)
gpu.fill(1, 1, w/2, h/2, "X") -- заполняем верхнюю-левую четверть экрана
gpu.copy(1, 1, w/2, h/2, w/2, h/2) -- копируем верхнюю-левую четверть в правую-нижнюю