Объединение режима 3D и кадрового буфера на DS - PullRequest
1 голос
/ 23 июня 2009

Документация подразумевает, что вы можете использовать режим 3D-рендеринга или кадрового буфера, и каждый из них доступен только для активного дисплея. Есть ли способ визуализации 3D на одном экране и буфера кадров на другом?

Ответы [ 2 ]

0 голосов
/ 25 августа 2013

Не совсем уверен, что вам нужно, но использование 3D на основном движке дисплея все еще оставляет весь вспомогательный движок для создания графики кадрового буфера (или любого другого 2D) (например, с использованием расширенного фона вращения).

Если вы хотите использовать режим кадрового буфера для захвата выходных данных из движка 3D, чтобы вы могли рендерить 3D на оба экрана, то в папке примеров libnds есть пример, который делает именно это:

http://libnds.devkitpro.org/a00035.html

0 голосов
/ 23 июня 2009

Хорошо, я слышал, что есть функция захвата экрана, которая позволяет рисовать 3D на вспомогательном движке (нижний экран), поэтому я посмотрел его и нашел пример .

К сожалению, макросы DCAP, похоже, не документированы, поэтому я взглянул на реальные определения nds / arm9 / video.h :

// Display capture control

#define REG_DISPCAPCNT        (*(vu32*)0x04000064)
#define REG_DISP_MMEM_FIFO  (*(vu32*)0x04000068)

#define DCAP_ENABLE    BIT(31)
#define DCAP_MODE(n)   (((n) & 3) << 29)
#define DCAP_DST(n)    (((n) & 3) << 26)
#define DCAP_SRC(n)    (((n) & 3) << 24)
#define DCAP_SIZE(n)   (((n) & 3) << 20)
#define DCAP_OFFSET(n) (((n) & 3) << 18)
#define DCAP_BANK(n)   (((n) & 3) << 16)
#define DCAP_B(n)      (((n) & 0x1F) << 8)
#define DCAP_A(n)      (((n) & 0x1F) << 0)

Мне кажется, что вы можете захватить 3D, нарисовать его на сабвуфере и использовать буфер кадров на главном, если хотите. Чтобы использовать кадровый буфер на вспомогательном движке, вам нужно поменять местами экраны с помощью lcdSwap().

...