Exemple #1
0
func (m *mainLoop) checkSize() {
	var w, h int32
	egl.QuerySurface(m.renderState.disp, m.renderState.surf, egl.WIDTH, &w)
	egl.QuerySurface(m.renderState.disp, m.renderState.surf, egl.HEIGHT, &h)
	width, height := int(w), int(h)
	if width != m.width || height != m.height {
		m.width = width
		m.height = height
		m.game.resize(m.width, m.height)
	}
}
Exemple #2
0
func Initialize(window egl.NativeWindowType, configAttr, contextAttr []int32) *platform.EGLState {
	var (
		config        egl.Config
		numConfig     int32
		visualId      int32
		width, height int32
	)
	display := egl.GetDisplay(egl.DEFAULT_DISPLAY)
	if ok := egl.Initialize(display, nil, nil); !ok {
		egl.LogError(egl.GetError())
	}
	if ok := egl.ChooseConfig(display, configAttr, &config, 1, &numConfig); !ok {
		egl.LogError(egl.GetError())
	}
	if ok := egl.GetConfigAttrib(display, config, egl.NATIVE_VISUAL_ID, &visualId); !ok {
		egl.LogError(egl.GetError())
	}
	egl.BindAPI(egl.OPENGL_ES_API)
	context := egl.CreateContext(display, config, egl.NO_CONTEXT, &contextAttr[0])
	surface := egl.CreateWindowSurface(display, config, window, nil)

	var val int32
	if ok := egl.QuerySurface(display, surface, egl.WIDTH, &width); !ok {
		egl.LogError(egl.GetError())
	}
	if ok := egl.QuerySurface(display, surface, egl.HEIGHT, &height); !ok {
		egl.LogError(egl.GetError())
	}
	if ok := egl.GetConfigAttrib(display, config, egl.SURFACE_TYPE, &val); !ok {
		egl.LogError(egl.GetError())
	}
	if ok := egl.GetConfigAttrib(display, config, egl.SURFACE_TYPE, &val); !ok {
		egl.LogError(egl.GetError())
	}
	if (val & egl.WINDOW_BIT) == 0 {
		panic("No WINDOW_BIT")
	}
	return &platform.EGLState{
		Display:           display,
		Config:            config,
		Context:           context,
		Surface:           surface,
		NumConfig:         numConfig,
		VisualId:          visualId,
		ContextAttributes: contextAttr,
		ConfigAttributes:  configAttr,
		SurfaceWidth:      int(width),
		SurfaceHeight:     int(height),
	}
}