[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
|