本文整理汇总了Golang中C.SDL_Init函数的典型用法代码示例。如果您正苦于以下问题:Golang SDL_Init函数的具体用法?Golang SDL_Init怎么用?Golang SDL_Init使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了SDL_Init函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Init
// Initializes SDL.
func Init(flags uint32) int {
status := int(C.SDL_Init(C.Uint32(flags)))
if (status != 0) && (runtime.GOOS == "darwin") && (flags&INIT_VIDEO != 0) {
if os.Getenv("SDL_VIDEODRIVER") == "" {
os.Setenv("SDL_VIDEODRIVER", "x11")
status = int(C.SDL_Init(C.Uint32(flags)))
if status != 0 {
os.Setenv("SDL_VIDEODRIVER", "")
}
}
}
return status
}
示例2: InitGL
func InitGL(width, height, msaa int, fullscreen bool) {
C.SDL_Init(C.SDL_INIT_VIDEO)
C.SDL_VideoInit( /*nil*/ C.SDL_GetVideoDriver(0))
C.SDL_GL_SetAttribute(C.SDL_GL_CONTEXT_MAJOR_VERSION, 3)
C.SDL_GL_SetAttribute(C.SDL_GL_CONTEXT_MINOR_VERSION, 2)
if msaa != 0 {
C.SDL_GL_SetAttribute(C.SDL_GL_MULTISAMPLEBUFFERS, 1)
C.SDL_GL_SetAttribute(C.SDL_GL_MULTISAMPLESAMPLES, C.int(msaa))
}
C.SDL_GL_SetAttribute(C.SDL_GL_DEPTH_SIZE, 16)
//win = C.SDL_CreateWindow(nil, C.SDL_WINDOWPOS_CENTERED, C.SDL_WINDOWPOS_CENTERED,C.int(width), C.int(height), C.SDL_WINDOW_OPENGL)
if fullscreen {
win = C.SDL_CreateWindow(nil, C.SDL_WINDOWPOS_CENTERED, C.SDL_WINDOWPOS_CENTERED, C.int(width), C.int(height), C.SDL_WINDOW_OPENGL|C.SDL_WINDOW_FULLSCREEN_DESKTOP)
} else {
win = C.SDL_CreateWindow(nil, C.SDL_WINDOWPOS_CENTERED, C.SDL_WINDOWPOS_CENTERED, C.int(width), C.int(height), C.SDL_WINDOW_OPENGL)
}
C.SDL_ShowWindow(win)
wat := C.SDL_GL_CreateContext(win)
fmt.Println(C.GoString(C.SDL_GetVideoDriver(0)))
C.SDL_GL_MakeCurrent(win, wat)
//C.SDL_GL_SetSwapInterval(1)
C.glEnable(C.GL_DEPTH_TEST)
C.glDepthFunc(C.GL_LEQUAL)
C.glClearColor(0.3, 0.5, 1, 0)
C.glClear(C.GL_COLOR_BUFFER_BIT | C.GL_DEPTH_BUFFER_BIT)
printerr("failed to initialize openGL")
}
示例3: Init
func Init(flags uint32) error {
if C.SDL_Init(C.Uint32(flags)) != 0 {
return getError()
}
return nil
}
示例4: mainLoop
func mainLoop(width, height int) {
// SDL window must be created in the same thread where the events are
// polled. Hence this stuff must be in a separate goroutine along with the
// event loop.
initFlags := int64(C.SDL_INIT_VIDEO) | int64(C.SDL_INIT_AUDIO)
screenFlags := 0
if C.SDL_Init(C.Uint32(initFlags)) == C.int(-1) {
panic(getError())
}
screen := C.SDL_SetVideoMode(
C.int(width), C.int(height), 32, C.Uint32(screenFlags))
if screen == nil {
panic(getError())
}
C.SDL_EnableUNICODE(1)
C.SDL_EnableKeyRepeat(C.SDL_DEFAULT_REPEAT_DELAY, C.SDL_DEFAULT_REPEAT_INTERVAL)
initAudio()
// Synchronize with Run function.
coord <- true
eventLoop()
C.SDL_Quit()
// Synchronize with Stop function.
coord <- true
runLevel = off
}
示例5: init
func init() {
log.SetFlags(0)
status := C.SDL_Init(C.SDL_INIT_EVERYTHING)
if status != 0 {
log.Fatal(sdlerr())
}
}
示例6: Init
func Init() (error string) {
flags := int64(C.SDL_INIT_VIDEO)
if C.SDL_Init(C.Uint32(flags)) != 0 {
error = C.GoString(C.SDL_GetError())
return
}
return ""
}
示例7: New
// New returns a newly created Screen
func New(width int, height int, fullscreen bool, FSAA int, name string) *Screen {
window := &Screen{}
C.SDL_Init(C.SDL_INIT_VIDEO)
C.setGlContextAttributes()
C.SDL_GL_SetAttribute(C.SDL_GL_DOUBLEBUFFER, 1)
// Force hardware accel
C.SDL_GL_SetAttribute(C.SDL_GL_ACCELERATED_VISUAL, 1)
if FSAA > 0 {
// FSAA (Fullscreen antialiasing)
C.SDL_GL_SetAttribute(C.SDL_GL_MULTISAMPLEBUFFERS, 1)
C.SDL_GL_SetAttribute(C.SDL_GL_MULTISAMPLESAMPLES, C.int(FSAA)) // 2, 4, 8
}
flags := C.SDL_WINDOW_OPENGL | C.SDL_RENDERER_ACCELERATED
if fullscreen {
flags = flags | C.SDL_WINDOW_FULLSCREEN
}
C.SDL_CreateWindowAndRenderer(C.int(width), C.int(height), C.Uint32(flags), &window.sdlWindow, &window.renderer)
C.SDL_SetWindowTitle(window.sdlWindow, C.CString(name))
C.SDL_GL_CreateContext(window.sdlWindow)
if err := gl.Init(); err != nil {
panic(err)
}
version := gl.GoStr(gl.GetString(gl.VERSION))
fmt.Println("OpenGL version", version)
// Configure global settings
gl.Enable(gl.BLEND)
gl.BlendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA)
gl.ClearColor(0.0, 0.0, 0.0, 1.0)
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
window.Width = width
window.Height = height
window.name = name
window.shouldClose = false
C.SDL_GL_SwapWindow(window.sdlWindow)
window.startTime = time.Now()
window.frameTime = time.Now()
C.SDL_GL_SetSwapInterval(1)
window.vsync = true
return window
}
示例8: Start
// Start starts the user interface. It must be called by the main go routine, and it
// never returns. The function f is called in a new go routine as the new "main"
// function. Rate is the rate at which the user interface should poll for events.
func Start(f func(), rate time.Duration) {
if C.SDL_Init(C.SDL_INIT_EVERYTHING) < 0 {
panic(sdlError())
}
initAudio()
go func() {
f()
os.Exit(0)
}()
tick := time.NewTicker(rate)
for {
select {
case f := <-doChan:
f()
case <-tick.C:
pollEvents()
}
}
}
示例9: OpenDisplay
//Opens a window.
//Returns an indicator of success.
func OpenDisplay(width, height int, fullscreen bool) bool {
if C.SDL_Init(C.SDL_INIT_VIDEO) != 0 {
return false
}
C.TTF_Init()
var flags C.Uint32 = C.SDL_DOUBLEBUF
flags |= C.SDL_SWSURFACE
flags |= C.SDL_HWACCEL
if fullscreen {
screen = C.openDisplayFullscreen(C.int(width), C.int(height))
} else {
screen = C.openDisplay(C.int(width), C.int(height))
}
if screen == nil {
return false
}
C.SDL_WM_SetCaption(C.CString(displayTitle), C.CString(""))
C.SDL_GL_SetAttribute(C.SDL_GL_SWAP_CONTROL, 1)
return true
}
示例10: LaunchGame
func LaunchGame(title string, width, height int) error {
// Convert the title to a c-string
ctitle := C.CString(title)
defer C.free(unsafe.Pointer(ctitle))
// Initialize SDL
if C.SDL_Init(C.SDL_INIT_VIDEO) < 0 {
return errors.New("SDL_Init")
}
defer C.SDL_Quit()
// Create the window
window = C.SDL_CreateWindow(ctitle, C.SDL_WINDOWPOS_UNDEFINED, C.SDL_WINDOWPOS_UNDEFINED, C.int(width), C.int(height), C.SDL_WINDOW_SHOWN)
if window == nil {
return errors.New("SDL_CreateWindow")
}
defer C.SDL_DestroyWindow(window)
// Create the renderer
renderer = C.SDL_CreateRenderer(window, C.int(-1), C.SDL_RENDERER_ACCELERATED|C.SDL_RENDERER_PRESENTVSYNC)
if renderer == nil {
return errors.New("SDL_CreateRenderer")
}
defer C.SDL_DestroyRenderer(renderer)
// Initialize image support
if success := int(C.initIMG()); success == 0 {
return errors.New("IMG_Init")
}
EventInit()
C.gameLoop()
destroyTextures()
return nil
}
示例11: Init
func Init(initSDL, stereo bool, rate, nchannels, nbuffers int) {
if initSDL {
GSDLWasInitHere = true
if C.SDL_Init(C.SDL_INIT_AUDIO) != 0 {
panic(fmt.Sprintf("Unable to initialize SDL: %v\n", util.GetSdlError()))
}
}
//initFlags := C.MIX_INIT_FLAC | C.MIX_INIT_MP3 | C.MIX_INIT_OGG
//C.Mix_Init(initFlags)
audio_format := C.AUDIO_S16SYS
nstereo := 1
if stereo {
nstereo = 2
}
if C.Mix_OpenAudio(C.int(rate), C.Uint16(audio_format),
C.int(nstereo), C.int(nbuffers)) != 0 {
panic(fmt.Sprintf("Unable to initialize audio: %v\n", util.GetMixError()))
}
channel.Allocate(nchannels)
}
示例12: Init
// Initializes SDL.
func Init(flags uint32) int {
GlobalMutex.Lock()
status := int(C.SDL_Init(C.Uint32(flags)))
GlobalMutex.Unlock()
return status
}
示例13: Init
func Init() int {
x := C.SDL_Init(C.SDL_INIT_VIDEO)
return int(x)
}
示例14: Init
func Init(flags uint32) (err error) {
if C.SDL_Init(C.Uint32(flags)) != 0 {
return errors.New(C.GoString(C.SDL_GetError()))
}
return nil
}
示例15: Init
func Init(flags uint32) int {
return int(C.SDL_Init(C.Uint32(flags)))
}