1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

simplify gg; remove forced OpenGL dependency; graph builder /w hot code reloading

This commit is contained in:
Alexander Medvednikov
2019-07-19 13:27:44 +02:00
parent 876dee6435
commit 769cda1d1f
4 changed files with 98 additions and 57 deletions

View File

@ -1,9 +1,9 @@
module main
import gx
import gl
import gg
import glfw
import time
import glfw
const (
WIDTH = 1000
@ -12,36 +12,30 @@ const (
)
struct Context {
mut:
gg *gg.GG
}
fn main() {
glfw.init()
mut ctx := &Context{gg: 0}
window := glfw.create_window(glfw.WinCfg{
title: 'graph builder'
width: 1000
height: 1000
ptr: ctx
})
window.make_context_current()
gg.init()
ctx.gg = gg.new_context(gg.Cfg {
width: 1000
height: 1000
use_ortho: true
})
for {
gl.clear()
gl.clear_color(255, 255, 255, 255)
ctx:= &Context{
gg: gg.new_context(gg.Cfg {
width: WIDTH
height: HEIGHT
use_ortho: true
create_window: true
window_title: 'graph builder'
window_user_ptr: ctx
})
}
for {
gg.clear(gx.White)
ctx.draw()
window.swap_buffers()
glfw.wait_events()
ctx.gg.render()
}
}
fn (ctx mut Context) draw() {
[live]
fn (ctx & Context) draw() {
// x axis
ctx.gg.draw_line(0, HEIGHT / 2, WIDTH, HEIGHT / 2)
// y axis
@ -50,9 +44,11 @@ fn (ctx mut Context) draw() {
mut prev_y := f64(0)
center := f64(WIDTH / 2)
for x := f64(- 10); x <= f64(10); x += 0.01 {
y := x * x * f64(SCALE)
// gx.draw_line_c(center + prev_x, center+prev_y, center + int(x*float(10)), center+y, gx.BLACK)
ctx.gg.draw_rect(int(center) + int(x * f64(SCALE)), int(center - y), 1, 1, gx.Black)
//y := (x * x - 2) * f64(SCALE)
y := (1.0 / x) * f64(SCALE)
//ctx.gg.draw_line(int(center + prev_x), int(center+prev_y),
//int(center + x*f64(10)), int(center+y))
ctx.gg.draw_rect(int(center) + int(x * f64(SCALE)), int(center - y), 2, 1, gx.Black)
// gx.draw_rect_f(center + (x * f64(SCALE)), center - y, 1, 1, gx.BLACK)
prev_x = x
prev_y = y