gtk3 python中的gtkglarea没有glcontext

时间:2017-03-04 16:28:59

标签: python opengl gtk3

我正在尝试使用GtkGLArea使用此代码创建3d可视化工具:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GdkPixbuf, Gdk
import os, sys

UI_FILE = "src/pygtk_gtkglarea.ui"

class GUI:
    def __init__(self):

        self.builder = Gtk.Builder()
        self.builder.add_from_file(UI_FILE)
        self.builder.connect_signals(self)

        gl_area = Gtk.GLArea()
        gl_area.connect('render', self.area_render)
        box = self.builder.get_object('box1')
        box.pack_end(gl_area, True, True, 0)

        window = self.builder.get_object('window')
        window.show_all()

    def area_render(self, gl_area, gl_context):
        print gl_area
        print gl_context
        return True

    def on_window_destroy(self, window):
        Gtk.main_quit()

def main():
    app = GUI()
    Gtk.main()

if __name__ == "__main__":
    sys.exit(main())

和ui文件:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<interface>
  <requires lib="gtk+" version="3.0"/>
  <object class="GtkWindow" id="window">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <property name="title" translatable="yes">window</property>
    <property name="default_width">500</property>
    <property name="default_height">400</property>
    <signal name="destroy" handler="on_window_destroy" swapped="no"/>
    <child>
      <object class="GtkBox" id="box1">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="orientation">vertical</property>
        <child>
          <placeholder/>
        </child>
      </object>
    </child>
  </object>
</interface>

但是,当我运行应用程序时,它会在其中显示一个文本无法创建GL上下文的窗口。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

所以我通过Google搜索无法创建GL上下文找到了答案。似乎大多数有此错误的人正在运行旧硬件。所以我尝试了我的新电脑(我不喜欢)。瞧!现在我得到了一个有效的窗口。