For people interested in drawing to tvs, billboards… the key here is using render targets.
function CreateNamedRenderTargetForModel(name, model)
local handle = 0
if not IsNamedRendertargetRegistered(name) then
RegisterNamedRendertarget(name, 0)
end
if not IsNamedRendertargetLinked(model) then
LinkNamedRendertarget(model)
end
if IsNamedRendertargetRegistered(name) then
handle = GetNamedRendertargetRenderId(name)
end
return handle
end
-- TV in Jimmys room
Citizen.CreateThread(function ()
local model = GetHashKey("des_tvsmash_start"); -- 2054093856
local pos = { x = -810.59, y = 170.46, z = 77.25 };
local entity = GetClosestObjectOfType(pos.x, pos.y, pos.z, 0.05, model, 0, 0, 0)
local handle = CreateNamedRenderTargetForModel("tvscreen", model)
while true do
SetTextRenderId(handle) -- set render target
Set_2dLayer(4)
Citizen.InvokeNative(0xC6372ECD45D73BCD, 1)
DrawRect(0.5, 0.5, 1.0, 0.5, 255, 0, 0, 255); -- WOAH!
SetTextRenderId(GetDefaultScriptRendertargetRenderId()) -- reset
Citizen.InvokeNative(0xC6372ECD45D73BCD, 0)
Citizen.Wait(0)
end
end)
I’ve put together a repo containing a few basic EXAMPLES to help devs get started.
I’d like to thank @davedumas1, who’s used them in his cinema and bunker scripts and has a provided a list of rendertargets.
cinscreen
npcphone
tvscreen
ex_tvscreen
gr_trailer_monitor_01
gr_trailer_monitor_02
gr_trailer_monitor_03
gr_trailerTV_01
gr_trailerTV_02
prop_clubhouse_laptop_01a
gr_bunker_laptop_01a
Prop_ImpExp_Lappy_01a
prop_ex_computer_screen
clubname_blackboard_01a
memorial_wall_president
memorial_wall_vice_president
memorial_wall_active_01
memorial_wall_active_02
memorial_wall_active_03
clubhouse_table
Prop_Screen_DCTL
prop_ex_computer_screen
prop_ex_office_text
clubhouse_Plan_01a
port_text
starb_text
stern_text
taxi
digiscanner
ECG
blimp_text
ID_Text
ID_Text_02
https://pastebin.com/TwWqDA9U