Advertisement
CapsAdmin

Untitled

May 28th, 2013
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.94 KB | None | 0 0
  1. local function create_texture(name, w, h, shader)
  2.    
  3.     name = name .. os.clock()
  4.     shader = shader or "UnlitGeneric"
  5.    
  6.     local rt = GetRenderTarget(name, w, h, true)
  7.     local mat = CreateMaterial(name, shader)
  8.     mat:SetTexture("$basetexture", rt)
  9.        
  10.     local obj = {}
  11.    
  12.     function obj:Start()
  13.         self.old_w = ScrW()
  14.         self.old_h = ScrH()
  15.        
  16.         self.old_rt = render.GetRenderTarget()
  17.         render.SetRenderTarget(rt)
  18.         render.SetViewPort(0,0,w,h)
  19.         cam.Start2D()
  20.        
  21.         self.started = true
  22.     end
  23.    
  24.     function obj:End()
  25.         if not self.started then error("tried to end drawing without starting", 2) return end
  26.         cam.End2D()
  27.         render.SetRenderTarget(self.old)
  28.         render.SetViewPort(0,0, self.old_w, self.old_h)
  29.     end
  30.    
  31.     function obj:DrawRect(x,y, _w,_h)
  32.         surface.SetMaterial(mat)
  33.         surface.DrawTexturedRect(x, y, _w or w, _h or h)
  34.     end
  35.  
  36.     function obj:GetMaterial()
  37.         return mat
  38.     end
  39.  
  40.     function obj:GetTexture()
  41.         return rt
  42.     end
  43.    
  44.     local id = name .. "_fill"
  45.  
  46.     function obj:Fill(func)
  47.         hook.Add("Think", id, function()
  48.            
  49.             self:Start()
  50.                 func(w, h)
  51.             self:End()
  52.        
  53.             hook.Remove("Think", id)
  54.         end)
  55.     end
  56.    
  57.     return obj
  58. end
  59.  
  60. local tex = create_texture("main", 256, 16)
  61. local overlay = create_texture("main_overlay", 256, 16)
  62. overlay:Fill(function(w, h)
  63.     render.Clear(0,0,0,0)
  64.  
  65.     surface.SetDrawColor(256,0,0,255)
  66.  
  67.     for x = 1, w/2 do
  68.         surface.DrawRect(x*2, 0, 1, h)
  69.     end
  70. end)
  71.  
  72. surface.CreateFont("lol_console", {font = "System", size = H})
  73.  
  74. hook.Add("Think", "lol", function()
  75.     tex:Start()
  76.         surface.SetDrawColor(255,0,0,255)
  77.         surface.DrawRect(0,0, 256, 16)
  78.        
  79.         surface.SetFont("lol_console")
  80.         surface.SetTextPos(0,0)
  81.         surface.SetTextColor(255, 255, 255, 255)
  82.         surface.DrawText("HELLO")
  83.     tex:End()
  84. end)
  85.  
  86. hook.Add("HUDPaint", "lol", function()
  87.     render.PushFilterMin(1)
  88.     tex:DrawRect(0,0,100*4, 10*4)
  89.     surface.SetDrawColor(255, 255, 255, 100)
  90.     overlay:DrawRect(0,10*16,100*16, 10*16)
  91.     render.PopFilterMin()
  92. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement