2015-10-16 72 views
2

我正在渲染一個自定義的OpenGL項目,最重要的是我想添加一些小部件。添加文本停止渲染自定義GL項目

到目前爲止,它工作正常。這就是它的樣子。

enter image description here

不過,現在我想通過一個Text項添加到OpenGL的:

Rectangle{ 
    id: logoTextBox 
    x: logoButton.x + logoButton.width 
    y: logoButton.y 
    width: 200 
    height: logoButton.height 
    color: "#EEEEEE" 

    Text{ 
     id: logoVersionBlurb 
     y: 10 
     x: 10 
     font.pointSize: 8 
     text: "Ver 1.0" 
     color: "black" 
    } 

    Text{ 
     id: logoNameBlurb 
     y: 20 
     x: 10 
     font.pointSize: 14 
     font.bold: true 
     text: "Please work" 
    } 
} 

和它看起來像這樣: enter image description here

我還是想了OpenGL來渲染,但我想Text出現在它上面。有任何想法嗎?

我在QML創造我GLContext這樣的:

MyGLWidget{ 
    id: glWidget 
} 

這裏是從C++文件

void MyGLWidget::sync() 
{ 
    if (!m_renderer) { 
     m_renderer = new MyGLRenderer(); 
     connect(window(), SIGNAL(beforeRendering()), m_renderer, SLOT(paint()), Qt::DirectConnection); 
    } 
    m_renderer->setViewportSize(window()->size() * window()->devicePixelRatio()); 
} 

回答

1

好了相關的方法,我已經找到了解決辦法。我將文本的renderType設置爲NativeRendering,並導致Triangle正確呈現。

Text{ 
     id:sizeDialogXText 
     color: "white" 
     y: sizeDialogTitleText.y + 20 
     x: sizeDialogTitleText.x 
     text: "X" 
     font.pointSize: 12 
     renderType: Text.NativeRendering //This is the important line 
    } 
+1

這是一種解決方法,甚至不能接近解決方案。在你的插槽中,你是在你找到它的時候離開GL狀態,還是你在篡改它?如果是這樣,請調用QQuickWindow :: resetOpenGLState。 – peppe