VGrabko
@VGrabko
Golang, Php, Js

Почему «не рендится» квадрат?

Мой код просто открывает окно. А я же ожидаю ещё и квадрат.

func init() {
	runtime.LockOSThread()
}

func main() {
	if err := glfw.Init(); err != nil {
		log.Fatal(err)
	}
	defer glfw.Terminate()

	window, err := glfw.CreateWindow(640, 480, "Testing", nil, nil)
	if err != nil {
		log.Fatal(err)
	}

	window.MakeContextCurrent()
	if err := gl.Init(); err != nil {
		log.Fatal(err)
	}

	for !window.ShouldClose() {
		// Do OpenGL stuff.
		window.SwapBuffers()
		glfw.PollEvents()
		//делаем квадрат
		gl.Clear(gl.COLOR_BUFFER_BIT)
		gl.Begin(gl.QUADS)

		gl.Color3f(1.0, 1.0, 1.0)
		gl.Vertex2i(250, 450)
		gl.Color3f(0.0, 0.0, 1.0)
		gl.Vertex2i(250, 150)
		gl.Color3f(0.0, 1.0, 0.0)
		gl.Vertex2i(550, 150)
		gl.Color3f(1.0, 0.0, 0.0)
		gl.Vertex2i(550, 450)
		gl.End()

	}

}


Что сделал не так?
  • Вопрос задан
  • 237 просмотров
Решения вопроса 2
Не вижу установки world, view и projection матриц. Походу оно реально рендерится, но камера просто не туда смотрит. Плюс нужно явно указать цвет для очистки экрана, чтобы наверняка.
Ответ написан
VGrabko
@VGrabko Автор вопроса
Golang, Php, Js
var (
	rotation float32
)

func init() {
	runtime.LockOSThread()
}

func main() {
	if err := glfw.Init(); err != nil {
		log.Fatal(err)
	}

	window, err := glfw.CreateWindow(640, 480, "Testing", nil, nil)
	if err != nil {
		log.Fatal(err)
	}

	window.MakeContextCurrent()
	if err := gl.Init(); err != nil {
		log.Fatal(err)
	}

	for !window.ShouldClose() {

		var ratio float64
		ratio = 640 / 480
		gl.Viewport(0, 0, 640, 480)
		gl.Clear(gl.COLOR_BUFFER_BIT)
		gl.MatrixMode(gl.PROJECTION)
		gl.LoadIdentity()
		gl.Ortho(-ratio, ratio, -1, 1, 1, -1)
		gl.MatrixMode(gl.MODELVIEW)
		gl.LoadIdentity()

		gl.Begin(gl.TRIANGLES)
		gl.Color3f(1, 0, 0)
		gl.Vertex3f(-0.6, -0.4, 0)
		gl.Color3f(0, 1, 0)
		gl.Vertex3f(0.6, -0.4, 0)
		gl.Color3f(0, 0, 1)
		gl.Vertex3f(0, 0.6, 0)
		gl.End()
		

		window.SwapBuffers()
		glfw.PollEvents()

	}

	glfw.Terminate()

}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы