Is there a way to render texture + wirframe?
Posted: Mon Mar 10, 2025 9:26 pm
Is there a way to render texture + wirframe (overlaying the texture)?
http://www.purebasic.com
https://www.purebasic.fr/english/
Code: Select all
EnableExplicit
#MASK_GENERALPICKMASK=1<<1
#MASK_MAINCAMERA=1<<1
#MASK_WIREFRAMECAMERA=1<<2
#MASK_RENDERCAMERA=1<<31
#RENDERWIDTH = 1366/2
#RENDERHEIGHT = 768/2
Global maincamera.i,rendercamera.i,wireframecamera.i,texture.i,wrendertexture.i,rendertexture.i,rendermaterial.i,quadmesh.i,mainquadobj.i,spheremesh.i, planemesh.i,mylight.i, myobj.i, myplane.i, myevent.i
Global texture_A.i,material_A.i
Procedure start()
InitEngine3D():InitSprite():InitKeyboard()
AntialiasingMode(#PB_AntialiasingMode_x2)
ExamineDesktops()
;PROPER SCREEN OPEN
;OpenWindow(0, 0,0, DesktopUnscaledX(DesktopWidth(0)),DesktopUnscaledY(DesktopHeight(0)), "RenderQuad Resize",#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
OpenWindow(0, 0,0,#RENDERWIDTH, #RENDERHEIGHT, "RenderQuad Resize",#PB_Window_ScreenCentered|#PB_Window_BorderLess)
OpenWindowedScreen(WindowID(0), 0, 0, #RENDERWIDTH, #RENDERHEIGHT, 1, 0, 0)
ResizeWindow(0,0,0,DesktopWidth(0),DesktopHeight(0))
EndProcedure
Procedure CreateCameras()
maincamera=CreateCamera(-1,0,0,100,100,#MASK_MAINCAMERA)
CameraBackColor(maincamera,(RGB(0,0,0)))
CameraRenderMode(maincamera,#PB_Camera_Textured)
wireframecamera=CreateCamera(-1,0,0,100,100,#MASK_WIREFRAMECAMERA)
CameraBackColor(wireframecamera,(RGB(0,0,0)))
CameraRenderMode(wireframecamera,#PB_Camera_Wireframe)
rendercamera=CreateCamera(-1,0,0,100,100,#MASK_RENDERCAMERA)
CameraBackColor(rendercamera,(RGB(255,0,255)))
CameraProjectionMode(rendercamera,#PB_Camera_Orthographic)
EndProcedure
Procedure createrenderquad()
quadmesh=CreatePlane(-1,CameraViewWidth(rendercamera)*DesktopWidth(0)/ScreenWidth(),CameraViewHeight(rendercamera)*DesktopHeight(0)/ScreenHeight(),1,1,1,1)
rendertexture = CreateRenderTexture(-1,CameraID(maincamera),#RENDERWIDTH,#RENDERHEIGHT,#PB_Texture_AutomaticUpdate)
wrendertexture = CreateRenderTexture(-1,CameraID(wireframecamera),#RENDERWIDTH,#RENDERHEIGHT,#PB_Texture_AutomaticUpdate)
rendermaterial =CreateMaterial(-1,TextureID(rendertexture))
AddMaterialLayer(rendermaterial,TextureID(wrendertexture),#PB_Material_Add)
mainquadobj=CreateEntity(-1,MeshID(quadmesh),MaterialID(rendermaterial),0,0,-100000,#MASK_GENERALPICKMASK,#MASK_RENDERCAMERA)
RotateEntity(mainquadobj,90,180,0,#PB_Absolute)
MoveCamera(rendercamera,0,0,-500,#PB_Absolute|#PB_World)
EndProcedure
Procedure createworld()
Protected x.i
texture_A=CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(texture_A))
Box(0,0,256,256,RGB(10,128,10))
For x = 1 To 4096*2
Plot(Random(255),Random(255),RGB(Random(255),255,255))
Next x
StopDrawing()
material_A.i = CreateMaterial(#PB_Any,TextureID(texture_A))
ScaleMaterial(material_A,0.25,0.25)
spheremesh=CreateSphere(-1,100)
planemesh=CreatePlane(-1,WindowWidth(0)*1.2,WindowHeight(0)*1.2,1,1,1,1)
mylight= CreateLight(-1,RGB(255,255,255),200,200,200)
DisableMaterialLighting(rendermaterial,#True)
MaterialFilteringMode(rendermaterial,#PB_Material_None)
AmbientColor(RGB(150,150,150))
myobj = CreateEntity(-1,MeshID(spheremesh),MaterialID(material_A),0,0,0,#MASK_GENERALPICKMASK,#MASK_MAINCAMERA|#MASK_WIREFRAMECAMERA)
myplane=CreateEntity(-1,MeshID(planemesh),MaterialID(material_A),0,-100,0,#MASK_GENERALPICKMASK,#MASK_MAINCAMERA|#MASK_WIREFRAMECAMERA)
MoveCamera(maincamera,0,0,-500,#PB_Absolute|#PB_World)
MoveCamera(wireframecamera,0,0,-500,#PB_Absolute|#PB_World)
MoveEntity(myobj,0,0,0,#PB_Absolute|#PB_World)
CameraLookAt(maincamera,EntityX(myobj),EntityY(myobj),EntityZ(myobj))
CameraLookAt(wireframecamera,EntityX(myobj),EntityY(myobj),EntityZ(myobj))
EndProcedure
start()
createcameras()
createrenderquad()
createworld()
Repeat
Repeat
myevent = WindowEvent()
Until myevent = 0
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left) : RotateCamera(maincamera,0,1,0,#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Right) : RotateCamera(maincamera,0,-1.0,0,#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Up) : MoveCamera(maincamera,0,0,-10,#PB_Local|#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Down) : MoveCamera(maincamera,0,0,10,#PB_Local|#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Left) : RotateCamera(wireframecamera,0,1,0,#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Right) : RotateCamera(wireframecamera,0,-1.0,0,#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Up) : MoveCamera(wireframecamera,0,0,-10,#PB_Local|#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Down) : MoveCamera(wireframecamera,0,0,10,#PB_Local|#PB_Relative): EndIf
RotateEntity(myobj,0,0.1,0,#PB_Relative)
RenderWorld()
FlipBuffers()
Until KeyboardReleased(#PB_Key_Escape)
Code: Select all
EnableExplicit
#MASK_GENERALPICKMASK=1<<1
#MASK_MAINCAMERA=1<<1
#MASK_WIREFRAMECAMERA=1<<2
#MASK_RENDERCAMERA=1<<31
#RENDERWIDTH = 1366/2
#RENDERHEIGHT = 768/2
Global maincamera.i,rendercamera.i,wireframecamera.i,texture.i,wrendertexture.i,rendertexture.i,rendermaterial.i,quadmesh.i,mainquadobj.i,spheremesh.i, planemesh.i,mylight.i, myobj.i, myplane.i, myevent.i
Global texture_A.i,material_A.i
Procedure start()
InitEngine3D():InitSprite():InitKeyboard()
AntialiasingMode(#PB_AntialiasingMode_x2)
ExamineDesktops()
;PROPER SCREEN OPEN
OpenWindow(0, 0,0, DesktopUnscaledX(DesktopWidth(0)),DesktopUnscaledY(DesktopHeight(0)), "RenderQuad Resize",#PB_Window_ScreenCentered|#PB_Window_BorderLess)
;OpenWindow(0, 0,0,#RENDERWIDTH, #RENDERHEIGHT, "RenderQuad Resize",#PB_Window_ScreenCentered|#PB_Window_BorderLess)
OpenWindowedScreen(WindowID(0), 0, 0, DesktopWidth(0), DesktopHeight(0), 1, 0, 0)
;ResizeWindow(0,0,0,DesktopWidth(0),DesktopHeight(0))
EndProcedure
Procedure CreateCameras()
maincamera=CreateCamera(-1,0,0,100,100,#MASK_MAINCAMERA)
CameraBackColor(maincamera,(RGB(0,0,0)))
CameraRenderMode(maincamera,#PB_Camera_Textured)
wireframecamera=CreateCamera(-1,0,0,100,100,#MASK_WIREFRAMECAMERA)
CameraBackColor(wireframecamera,(RGB(0,0,0)))
CameraRenderMode(wireframecamera,#PB_Camera_Wireframe)
rendercamera=CreateCamera(-1,0,0,100,100,#MASK_RENDERCAMERA)
CameraBackColor(rendercamera,(RGB(255,0,255)))
CameraProjectionMode(rendercamera,#PB_Camera_Orthographic)
EndProcedure
Procedure createrenderquad()
quadmesh=CreatePlane(-1,CameraViewWidth(rendercamera)*ScreenWidth()/ScreenHeight(),CameraViewHeight(rendercamera)*ScreenWidth()/ScreenHeight(),1,1,1,1)
rendertexture = CreateRenderTexture(-1,CameraID(maincamera),#RENDERWIDTH,#RENDERHEIGHT,#PB_Texture_AutomaticUpdate)
wrendertexture = CreateRenderTexture(-1,CameraID(wireframecamera),#RENDERWIDTH,#RENDERHEIGHT,#PB_Texture_AutomaticUpdate)
rendermaterial =CreateMaterial(-1,TextureID(rendertexture))
AddMaterialLayer(rendermaterial,TextureID(wrendertexture),#PB_Material_Add)
mainquadobj=CreateEntity(-1,MeshID(quadmesh),MaterialID(rendermaterial),0,0,-100000,#MASK_GENERALPICKMASK,#MASK_RENDERCAMERA)
RotateEntity(mainquadobj,90,180,0,#PB_Absolute)
MoveCamera(rendercamera,0,0,-500,#PB_Absolute|#PB_World)
EndProcedure
Procedure createworld()
Protected x.i
texture_A=CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(texture_A))
Box(0,0,256,256,RGB(10,128,10))
For x = 1 To 4096*2
Plot(Random(255),Random(255),RGB(Random(255),255,255))
Next x
StopDrawing()
material_A.i = CreateMaterial(#PB_Any,TextureID(texture_A))
ScaleMaterial(material_A,0.25,0.25)
spheremesh=CreateSphere(-1,100)
planemesh=CreatePlane(-1,WindowWidth(0)*1.2,WindowHeight(0)*1.2,1,1,1,1)
mylight= CreateLight(-1,RGB(255,255,255),200,200,200)
DisableMaterialLighting(rendermaterial,#True)
MaterialFilteringMode(rendermaterial,#PB_Material_None)
AmbientColor(RGB(150,150,150))
myobj = CreateEntity(-1,MeshID(spheremesh),MaterialID(material_A),0,0,0,#MASK_GENERALPICKMASK,#MASK_MAINCAMERA|#MASK_WIREFRAMECAMERA)
myplane=CreateEntity(-1,MeshID(planemesh),MaterialID(material_A),0,-100,0,#MASK_GENERALPICKMASK,#MASK_MAINCAMERA|#MASK_WIREFRAMECAMERA)
MoveCamera(maincamera,0,0,-500,#PB_Absolute|#PB_World)
MoveCamera(wireframecamera,0,0,-500,#PB_Absolute|#PB_World)
MoveEntity(myobj,0,0,0,#PB_Absolute|#PB_World)
CameraLookAt(maincamera,EntityX(myobj),EntityY(myobj),EntityZ(myobj))
CameraLookAt(wireframecamera,EntityX(myobj),EntityY(myobj),EntityZ(myobj))
EndProcedure
start()
createcameras()
createrenderquad()
createworld()
Repeat
Repeat
myevent = WindowEvent()
Until myevent = 0
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left) : RotateCamera(maincamera,0,1,0,#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Right) : RotateCamera(maincamera,0,-1.0,0,#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Up) : MoveCamera(maincamera,0,0,-10,#PB_Local|#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Down) : MoveCamera(maincamera,0,0,10,#PB_Local|#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Left) : RotateCamera(wireframecamera,0,1,0,#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Right) : RotateCamera(wireframecamera,0,-1.0,0,#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Up) : MoveCamera(wireframecamera,0,0,-10,#PB_Local|#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Down) : MoveCamera(wireframecamera,0,0,10,#PB_Local|#PB_Relative): EndIf
RotateEntity(myobj,0,0.1,0,#PB_Relative)
RenderWorld()
FlipBuffers()
Until KeyboardReleased(#PB_Key_Escape)
Code: Select all
quadmesh = CreatePlane(#PB_Any,(ScreenWidth()/ScreenHeight())*1000,1000,1,1,1,1)
Code: Select all
EnableExplicit
#MASK_GENERALPICKMASK=1<<1
#MASK_MAINCAMERA=1<<1
#MASK_WIREFRAMECAMERA=1<<2
#MASK_RENDERCAMERA=1<<31
#RENDERWIDTH = 1366
#RENDERHEIGHT = 768
Global maincamera.i,rendercamera.i,wireframecamera.i,texture.i,wrendertexture.i,rendertexture.i,rendermaterial.i,quadmesh.i,mainquadobj.i,spheremesh.i, planemesh.i,mylight.i, myobj.i, myplane.i, myevent.i
Global image_A.i,texture_A.i,material_A.i
Procedure start()
InitEngine3D():InitSprite():InitKeyboard()
AntialiasingMode(#PB_AntialiasingMode_x2)
ExamineDesktops()
OpenWindow(0, 0,0, DesktopUnscaledX(DesktopWidth(0)),DesktopUnscaledY(DesktopHeight(0)), "RenderQuad Resize",#PB_Window_ScreenCentered|#PB_Window_BorderLess)
OpenWindowedScreen(WindowID(0), 0, 0, DesktopWidth(0), DesktopHeight(0), 1, 0, 0)
EndProcedure
Procedure CreateCameras()
maincamera=CreateCamera(-1,0,0,100,100,#MASK_MAINCAMERA)
CameraBackColor(maincamera,(RGB(0,0,0)))
CameraRenderMode(maincamera,#PB_Camera_Textured)
wireframecamera=CreateCamera(-1,0,0,100,100,#MASK_WIREFRAMECAMERA)
CameraBackColor(wireframecamera,(RGB(0,0,0)))
CameraRenderMode(wireframecamera,#PB_Camera_Wireframe)
rendercamera=CreateCamera(-1,0,0,100,100,#MASK_RENDERCAMERA)
CameraBackColor(rendercamera,(RGB(255,0,255)))
CameraProjectionMode(rendercamera,#PB_Camera_Orthographic)
EndProcedure
Procedure createrenderquad()
quadmesh=CreatePlane(-1,ScreenWidth()/ScreenHeight()*1000,1000,1,1,1,1)
rendertexture = CreateRenderTexture(-1,CameraID(maincamera),#RENDERWIDTH,#RENDERHEIGHT,#PB_Texture_AutomaticUpdate)
wrendertexture = CreateRenderTexture(-1,CameraID(wireframecamera),#RENDERWIDTH,#RENDERHEIGHT,#PB_Texture_AutomaticUpdate)
rendermaterial =CreateMaterial(-1,TextureID(rendertexture))
AddMaterialLayer(rendermaterial,TextureID(wrendertexture),#PB_Material_Add)
mainquadobj=CreateEntity(-1,MeshID(quadmesh),MaterialID(rendermaterial),0,0,-100000,#MASK_GENERALPICKMASK,#MASK_RENDERCAMERA)
RotateEntity(mainquadobj,90,180,0,#PB_Absolute)
MoveCamera(rendercamera,0,0,-500,#PB_Absolute|#PB_World)
EndProcedure
Procedure createworld()
Protected x.i
image_A=CreateImage(#PB_Any,256,256)
texture_A=CreateTexture(#PB_Any,256,256)
StartDrawing(ImageOutput(image_A))
Box(0,0,256,256,RGB(10,128,10))
For x = 1 To 4096*2
Plot(Random(255),Random(255),RGB(Random(255),255,255))
Next x
StopDrawing()
StartDrawing(TextureOutput(texture_A))
DrawImage(ImageID(image_A),0,0)
StopDrawing()
FreeImage(image_A)
material_A.i = CreateMaterial(#PB_Any,TextureID(texture_A))
ScaleMaterial(material_A,0.25,0.25)
spheremesh=CreateSphere(-1,100)
planemesh=CreatePlane(-1,WindowWidth(0)*1.2,WindowHeight(0)*1.2,1,1,1,1)
mylight= CreateLight(-1,RGB(255,255,255),200,200,200)
DisableMaterialLighting(rendermaterial,#True)
MaterialFilteringMode(rendermaterial,#PB_Material_None)
AmbientColor(RGB(150,150,150))
myobj = CreateEntity(-1,MeshID(spheremesh),MaterialID(material_A),0,0,0,#MASK_GENERALPICKMASK,#MASK_MAINCAMERA|#MASK_WIREFRAMECAMERA)
myplane=CreateEntity(-1,MeshID(planemesh),MaterialID(material_A),0,-100,0,#MASK_GENERALPICKMASK,#MASK_MAINCAMERA|#MASK_WIREFRAMECAMERA)
MoveCamera(maincamera,0,0,-500,#PB_Absolute|#PB_World)
MoveCamera(wireframecamera,0,0,-500,#PB_Absolute|#PB_World)
MoveEntity(myobj,0,0,0,#PB_Absolute|#PB_World)
CameraLookAt(maincamera,EntityX(myobj),EntityY(myobj),EntityZ(myobj))
CameraLookAt(wireframecamera,EntityX(myobj),EntityY(myobj),EntityZ(myobj))
EndProcedure
start()
createcameras()
createrenderquad()
createworld()
Repeat
Repeat
myevent = WindowEvent()
Until myevent = 0
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left) : RotateCamera(maincamera,0,1,0,#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Right) : RotateCamera(maincamera,0,-1.0,0,#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Up) : MoveCamera(maincamera,0,0,-10,#PB_Local|#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Down) : MoveCamera(maincamera,0,0,10,#PB_Local|#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Left) : RotateCamera(wireframecamera,0,1,0,#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Right) : RotateCamera(wireframecamera,0,-1.0,0,#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Up) : MoveCamera(wireframecamera,0,0,-10,#PB_Local|#PB_Relative): EndIf
If KeyboardPushed(#PB_Key_Down) : MoveCamera(wireframecamera,0,0,10,#PB_Local|#PB_Relative): EndIf
RotateEntity(myobj,0,0.1,0,#PB_Relative)
RenderWorld()
FlipBuffers()
Until KeyboardReleased(#PB_Key_Escape)