Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local function create_texture(name, w, h, shader)
- name = name .. os.clock()
- shader = shader or "UnlitGeneric"
- local rt = GetRenderTarget(name, w, h, true)
- local mat = CreateMaterial(name, shader)
- mat:SetTexture("$basetexture", rt)
- local obj = {}
- function obj:Start()
- self.old_w = ScrW()
- self.old_h = ScrH()
- self.old_rt = render.GetRenderTarget()
- render.SetRenderTarget(rt)
- render.SetViewPort(0,0,w,h)
- cam.Start2D()
- self.started = true
- end
- function obj:End()
- if not self.started then error("tried to end drawing without starting", 2) return end
- cam.End2D()
- render.SetRenderTarget(self.old)
- render.SetViewPort(0,0, self.old_w, self.old_h)
- end
- function obj:DrawRect(x,y, _w,_h)
- surface.SetMaterial(mat)
- surface.DrawTexturedRect(x, y, _w or w, _h or h)
- end
- function obj:GetMaterial()
- return mat
- end
- function obj:GetTexture()
- return rt
- end
- local id = name .. "_fill"
- function obj:Fill(func)
- hook.Add("Think", id, function()
- self:Start()
- func(w, h)
- self:End()
- hook.Remove("Think", id)
- end)
- end
- return obj
- end
- local tex = create_texture("main", 256, 16)
- local overlay = create_texture("main_overlay", 256, 16)
- overlay:Fill(function(w, h)
- render.Clear(0,0,0,0)
- surface.SetDrawColor(256,0,0,255)
- for x = 1, w/2 do
- surface.DrawRect(x*2, 0, 1, h)
- end
- end)
- surface.CreateFont("lol_console", {font = "System", size = H})
- hook.Add("Think", "lol", function()
- tex:Start()
- surface.SetDrawColor(255,0,0,255)
- surface.DrawRect(0,0, 256, 16)
- surface.SetFont("lol_console")
- surface.SetTextPos(0,0)
- surface.SetTextColor(255, 255, 255, 255)
- surface.DrawText("HELLO")
- tex:End()
- end)
- hook.Add("HUDPaint", "lol", function()
- render.PushFilterMin(1)
- tex:DrawRect(0,0,100*4, 10*4)
- surface.SetDrawColor(255, 255, 255, 100)
- overlay:DrawRect(0,10*16,100*16, 10*16)
- render.PopFilterMin()
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement