OpenGL仅绘制背景,不会显示黄点。我想用glBegin
和glEnd
来画它。坐标是变量,因为我想稍后移动那个点。大部分代码只是GLFW初始化,我担心的是draw_player
函数,因为那里包含了DRAW调用。我偶然发现的修复方法是使用GL_POINTS
而不是GL_POINT
(在glBegin
中作为参数),但没有帮助(尽管我继续使用它)。
# include <GLFW/glfw3.h>
//#include <stdio.h>
//coordinates
int px, py;
//My not working function
void draw_player()
{
glColor3f(1.0f, 1.0f, 0);
glPointSize(64.0f);
glBegin(GL_POINTS);
glVertex2i(px, py);
glEnd();
}
int main(int argc, char* argv[])
{
GLFWwindow* window;
if (!glfwInit())
return -1;
window = glfwCreateWindow(910, 512, "Raycast", NULL, NULL);
if (!window)
{
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
glClearColor(0.1f, 0.1f, 0.5f, 1.0f);
//setting the coordinates
px = 100;
py = 10;
while (!glfwWindowShouldClose(window))
{
/* Render here */
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
draw_player();
/* Swap front and back buffers */
glfwSwapBuffers(window);
/* Poll for and process events */
glfwPollEvents();
}
glfwTerminate();
return 0;
}
1条答案
按热度按时间11dmarpk1#
坐标(100,10)不在窗口中。您尚未指定投影矩阵。因此,您必须在归一化设备空间中指定点的坐标(在范围[-1.0,1.0]内)。
如果要以像素单位指定坐标,则必须使用
glOrtho
定义合适的正交投影: