12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- function lovr.load()
- lovr.graphics.setBackgroundColor(1, 1, 1)
- mask = lovr.headset.getDisplayMask()
- -- Print the mesh, for debugging
- if mask then
- print('mask = {')
- for i = 1, #mask do
- print(string.format('\t{ %f, %f }', mask[i][1], mask[i][2]))
- end
- print('}')
- else
- print('No mask found')
- end
- shader = lovr.graphics.newShader([[
- vec4 position(mat4 projection, mat4 transform, vec4 vertex) {
- // Rescale mesh coordinates from (0,1) to (-1,1)
- vertex.xy *= 2.;
- vertex.xy -= 1.;
- // Flip the mesh if it's being drawn in the right eye
- if (lovrViewID == 1) {
- vertex.x = -vertex.x;
- }
- return vertex;
- }
- ]], [[
- // The fragment shader returns solid black for illustration purposes. It could be transparent.
- vec4 color(vec4 graphicsColor, sampler2D image, vec2 uv) {
- return vec4(0., 0., 0., 1.);
- }
- ]])
- if mask then
- mesh = lovr.graphics.newMesh({ { 'lovrPosition', 'float', 2 } }, mask, 'triangles')
- end
- end
- function lovr.draw()
- if mask then
- -- Mask out parts of the display that aren't visible to skip rendering those pixels later
- lovr.graphics.setShader(shader)
- mesh:draw()
- lovr.graphics.setShader()
- -- Draw a red cube
- lovr.graphics.setColor(0xff0000)
- lovr.graphics.cube('fill', 0, 1.7, -1, .5, lovr.timer.getTime())
- lovr.graphics.setColor(0xffffff)
- else
- lovr.graphics.setColor(0x000000)
- lovr.graphics.print('No mask found.', 0, 1.7, -3, .2)
- lovr.graphics.setColor(0xffffff)
- end
- end
|