Показать сообщение отдельно
Старый 14.08.2025, 15:15   #4
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,373
Написано 2,478 полезных сообщений
(для 6,866 пользователей)
Ответ: Рендер с большим разрешением

Супер давно не открывал блиц, но что-то мне подсказывает, что задуманное возможно сделать через создание второй камеры и специального текстурного буфера, куда будем рендерить в более высоком разрешении, эту текстуру надо наложить на квад, который будет рисоваться основной камерой.
Код, примерно такой:
Graphics3D 800600322

; ---------- Настройка ----------
Local screenW 800
Local screenH 
600
Local scaleFactor 
2
Local highResW 
screenW scaleFactor
Local highResH 
screenH scaleFactor

; ---------- Текстура рендера ----------
Local renderTex CreateTexture(highResWhighResH256)

; ---------- 
Камера сцены ----------
Local sceneCam CreateCamera()
CameraViewport(sceneCam00highResWhighResH)

; ---------- 
Сцена ----------
Local light CreateLight()
Local cube CreateCube()
PositionEntity cube005

; ---------- Квад вручную через CreateMesh ----------
Local screenQuad CreateScreenQuad(renderTex)

; ---------- 
Камера отображения ----------
Local screenCam CreateCamera()
CameraProjMode screenCamортографическая проекция
CameraClsMode screenCam
FalseFalse
PositionEntity screenCam
000
PositionEntity screenQuad
001

; ---------- Основной цикл ----------
While 
Not KeyDown(1)
    
TurnEntity cube010

    
Рендерим сцену в текстуру
    SetBuffer TextureBuffer
(renderTex)
    
RenderWorld(sceneCam)
    
CameraToTex(sceneCamrenderTex)

    ; 
Отображаем quad с текстурой
    SetBuffer BackBuffer
()
    
Cls
    RenderWorld
(screenCam)

    
Flip
Wend
End

; ---------- Функция создания quad’а вручную ----------
Function 
CreateScreenQuad(tex)
    
mesh CreateMesh()
    
surf CreateSurface(mesh)

    ; 
Вершины
    v0 
AddVertex(surf, -1,  1000)
    
v1 AddVertex(surf, -1, -1001)
    
v2 AddVertex(surf,  1, -1011)
    
v3 AddVertex(surf,  1,  1010)

    ; 
Два треугольника
    AddTriangle
(surfv0v1v2)
    
AddTriangle(surfv0v2v3)

    ; 
Наложим текстуру
    EntityTexture
(meshtex)
    
EntityFX(mesh1) ; отключить culling
    ScaleEntity
(meshscreenW 2.0screenH 2.01)
    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)
 
Ответить с цитированием