Yürütme sırasında arka plan daha koyu mavi renkte oluşturulmalı, ancak açıkça bir şeyleri kaçırdım. Pencere bunun yerine hemen arkasındaki görüntünün aynısı olan bir arka plan ile işlenir (ör., Diğer açık pencereler veya masaüstü, vb.). Sorunu tanımlayamıyorum.Neden bu OpenGL bağlamında oluşturulan pencere şeffaf olarak açılır?
Şu anda derleme sırasında herhangi -std
kullanmıyorum ve ben çıkış yürütülebilir ile aşağıdaki bağlantıları kullanarak ediyorum:
#include <stdio.h>
#include <stdio.h>
#include <GL/glew.h>
#include <GLFW/glfw3.h>
GLFWwindow* window;
#include <glm/glm.hpp>
using namespace glm;
int main(void)
{
//Initialize GLFW
if(!glfwInit())
{
fprintf(stderr, "Failes to intialize GLFW\n");
return -1;
}
glfwWindowHint(GLFW_SAMPLES, 4); // 4x antialiasing
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
// Open a Window and create it's OpenGL context
window = glfwCreateWindow(1024, 768, "playground", NULL, NULL);
if(window == NULL) {
fprintf(stderr, "Failed to open GLFW window.\n");
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
glewExperimental = true;
if (glewInit() != GLEW_OK) {
fprintf(stderr, "Failed to initialize GLEW\n");
return -1;
}
glfwSetInputMode(window, GLFW_STICKY_KEYS, GL_TRUE);
// Dark blue background
glClearColor(0.0f, 0.0f, 0.4f, 0.0f);
do{
glfwSwapBuffers(window);
glfwPollEvents();
}
while(glfwGetKey(window, GLFW_KEY_ESCAPE) != GLFW_PRESS &&
glfwWindowShouldClose(window) == 0);
glfwTerminate();
return 0;
}
I: Burada
-lGL -lGLU -lGLEW -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi -ldl -lXcursor -lXinerama
benim .cpp dosyasının içeriğini şunlardır bir OpenGL yeni üyesiyim. Her şeyden önce yapıya dikkat çekmekte veya bir şey tamamen yeniden yazılmalı/yeniden yazılmalıdır. Teşekkürler!
aşağıdaki hata aldı 55: 17: hatası: çok az argümanlar işlev‘boşluk glClear (GLbitfield)’ glClear(); // Açık renkle arka planı temizle. 0: 8: dosyasında ^ playground.cpp kürsüde yer /usr/include/GL/glew.h:850:23: not: Burada bildirilen GLAPI geçersiz GLAPIENTRY glClear (GLbitfield maskesi); karşılık ' Buna, glclc() ile GL_COLOR_BUFFER_BIT argümanını geçtim ve şimdi her şey yolunda gidiyor. Bunun, bu hatanın tek cevabı olmadığını kabul ediyorum. Eğer öyleyse, başka argümanlar yeterli olurdu/neden bu bir işe yaradı? – zzz
@liamwilt Doğru, argümanı unuttum: "GL_COLOR_BUFFER_BIT". Genellikle bu işlev hem renk tamponunu hem de derinlik arabelleğini temizlemek için kullanılır, böylece 'glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); – Aracthor