 |
3D-программирование Вопросы, касающиеся программирования 3D мира |
12.03.2025, 23:18
|
#1
|
AnyKey`щик
Регистрация: 30.01.2024
Сообщений: 5
Написано одно полезное сообщение (для 3 участников)
|
Рендер с большим разрешением
Здравствуйте.
Подскажите пожалуйста, как мне сделать renderworld, но с разрешением экрана больше чем у меня фактически (такое вообще возможно?). То есть у меня ноутбук и разрешение экрана 1366*768, а можно отрендерить 2000*2000?
Уточнение: нужно для захвата большей области сцены для создания освещения. Может есть возможности при работе с камерой, или с каким нибудь буфером?
Последний раз редактировалось DonLeno, 16.03.2025 в 17:41.
|
(Offline)
|
|
05.08.2025, 22:49
|
#2
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,037
Написано 2,320 полезных сообщений (для 5,359 пользователей)
|
Ответ: Рендер с большим разрешением
В самом Блице нельзя насколько я знаю, будет всё равно ужато до размера монитора.
Можно через панель настроек Nvidia выставить разрешение больше чем поддерживает монитор. Оно буде вписываться в экран, всё станет мелким, но захватываться буфер будет по разрешению окна.
Думаю таким образом можно запустить Блиц. Но надо учитывать что у ванильного ограничения что-то типо 2048x2048.
Не знаю можно ли такое провернуть через панель AMD.
Но возможно есть утилиты которые такое делают на любом железе.
Хотя, если нет необходимости видеть всё на экране. То запустить в оконном режиме (окно больше монитора уедет за границу), в самом Блице захватить буфер и сохранить.
SaveBuffer(FrontBuffer(), "screenshot.bmp")
|
(Online)
|
|
13.08.2025, 22:29
|
#3
|
Оператор ЭВМ
Регистрация: 20.01.2019
Адрес: Томск
Сообщений: 30
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Рендер с большим разрешением
Привет DonLeno ( и где вы только такие псевдонимы берёте )) ). В чистом блице это некатит, дело в том что он берёт из памяти действительно то что туда помещается. Если быть точным, то да-же возможно захватить в оконном режиме больше определённого окна. Делал нечто подобное ещё на XP. Но не более вашего разрешения экрана. Тебе DonLeno если в чистом блице прийдётся всё-же программно это дло решать.
__________________
|
(Offline)
|
|
14.08.2025, 15:15
|
#4
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,373
Написано 2,478 полезных сообщений (для 6,866 пользователей)
|
Ответ: Рендер с большим разрешением
Супер давно не открывал блиц, но что-то мне подсказывает, что задуманное возможно сделать через создание второй камеры и специального текстурного буфера, куда будем рендерить в более высоком разрешении, эту текстуру надо наложить на квад, который будет рисоваться основной камерой.
Код, примерно такой:

Graphics3D 800, 600, 32, 2
; ---------- Настройка ---------- Local screenW = 800 Local screenH = 600 Local scaleFactor = 2 Local highResW = screenW * scaleFactor Local highResH = screenH * scaleFactor
; ---------- Текстура рендера ---------- Local renderTex = CreateTexture(highResW, highResH, 256)
; ---------- Камера сцены ---------- Local sceneCam = CreateCamera() CameraViewport(sceneCam, 0, 0, highResW, highResH)
; ---------- Сцена ---------- Local light = CreateLight() Local cube = CreateCube() PositionEntity cube, 0, 0, 5
; ---------- Квад вручную через CreateMesh ---------- Local screenQuad = CreateScreenQuad(renderTex)
; ---------- Камера отображения ---------- Local screenCam = CreateCamera() CameraProjMode screenCam, 0 ; ортографическая проекция CameraClsMode screenCam, False, False PositionEntity screenCam, 0, 0, 0 PositionEntity screenQuad, 0, 0, 1
; ---------- Основной цикл ---------- While Not KeyDown(1) TurnEntity cube, 0, 1, 0
; Рендерим сцену в текстуру SetBuffer TextureBuffer(renderTex) RenderWorld(sceneCam) CameraToTex(sceneCam, renderTex)
; Отображаем quad с текстурой SetBuffer BackBuffer() Cls RenderWorld(screenCam)
Flip Wend End
; ---------- Функция создания quad’а вручную ---------- Function CreateScreenQuad(tex) mesh = CreateMesh() surf = CreateSurface(mesh)
; Вершины v0 = AddVertex(surf, -1, 1, 0, 0, 0) v1 = AddVertex(surf, -1, -1, 0, 0, 1) v2 = AddVertex(surf, 1, -1, 0, 1, 1) v3 = AddVertex(surf, 1, 1, 0, 1, 0)
; Два треугольника AddTriangle(surf, v0, v1, v2) AddTriangle(surf, v0, v2, v3)
; Наложим текстуру EntityTexture(mesh, tex) EntityFX(mesh, 1) ; отключить culling ScaleEntity(mesh, screenW / 2.0, screenH / 2.0, 1) Return mesh End Function
За работосопсобность не ручаюсь, но смысл способа понять можно. При должном желании это можно допилить. У меня есть сомнения по поводу того, позволяет ли CameraViewport сделать размер рисуемого прямоугольника больше размера окна, делегирую поск ответа на данный вопрос владельцам блица, проверяйте, господа
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:59.
|