VertexArray 未绘制到屏幕上
VertexArray not drawing onto screen
我目前正在学习 VertexArray,目前正在努力解决我遇到的问题。问题是 VertexArray 不会绘制到屏幕上。我用精灵测试了代码,精灵被成功绘制到屏幕上。
#include <SFML/Graphics.hpp>
#include <string>
#include <iostream>
#include <ctime>
#include <cstdlib>
int main()
{
sf::Vector2i screenDimensions(800,600);
sf::Vector2i blockDimensions(10,10);
srand(time(0));
sf::RenderWindow Window;
Window.create(sf::VideoMode(screenDimensions.x,screenDimensions.y),"My first SFML game!");
while(Window.isOpen())
{
sf::Event Evnt;
while(Window.pollEvent(Evnt))
{
switch(Evnt.type)
{
case(sf::Event::Closed):
Window.close();
break;
}
}
for(int i=0; i< screenDimensions.x/blockDimensions.x; i++)
{
for(int j=0; j<screenDimensions.y/blockDimensions.y;j++)
{
sf::VertexArray vArray;
vArray[0].position = sf::Vector2f(i*blockDimensions.x,j*blockDimensions.y);
vArray[1].position = sf::Vector2f(i*blockDimensions.x + blockDimensions.x, j*blockDimensions.y);
vArray[2].position = sf::Vector2f(i*blockDimensions.x + blockDimensions.x, j*blockDimensions.y + blockDimensions.y);
vArray[3].position = sf::Vector2f(i*blockDimensions.x,j*blockDimensions.y + blockDimensions.y);
for(int k=0;k<4;k++)
{
int red = rand() % 255;
int green = rand() % 255;
int blue = rand() % 255;
vArray[k].color = sf::Color(red,green,blue);
}
Window.draw(vArray);
}
}
Window.clear();
Window.display();
}
}
下面是将四边形内的随机颜色绘制到屏幕上的简单代码。我遵循的教程是 CodingMadeEasy 的 this one。提前谢谢大家!
首先你创建了一个空的顶点数组。创建一个具有类型和初始顶点数 sf::VertexArray vArray (sf::Quads, 4);
你在实际绘制之前清除了 window,Window.display();
在 Window.clear();
之前。
这是工作代码:
#include <SFML/Graphics.hpp>
#include <string>
#include <iostream>
#include <ctime>
#include <cstdlib>
int main()
{
sf::Vector2i screenDimensions(800,600);
sf::Vector2i blockDimensions(10,10);
srand(time(0));
sf::RenderWindow Window;
Window.create(sf::VideoMode(screenDimensions.x,screenDimensions.y),"My first SFML game!");
while(Window.isOpen())
{
sf::Event Evnt;
while(Window.pollEvent(Evnt))
{
switch(Evnt.type)
{
case(sf::Event::Closed):
Window.close();
break;
}
}
for(int i=0; i< screenDimensions.x/blockDimensions.x; i++)
{
for(int j=0; j<screenDimensions.y/blockDimensions.y;j++)
{
sf::VertexArray vArray (sf::Quads, 4);
vArray[0].position = sf::Vector2f(i*blockDimensions.x,j*blockDimensions.y);
vArray[1].position = sf::Vector2f(i*blockDimensions.x + blockDimensions.x, j*blockDimensions.y);
vArray[2].position = sf::Vector2f(i*blockDimensions.x + blockDimensions.x, j*blockDimensions.y + blockDimensions.y);
vArray[3].position = sf::Vector2f(i*blockDimensions.x,j*blockDimensions.y + blockDimensions.y);
for(int k=0;k<4;k++)
{
int red = rand() % 255;
int green = rand() % 255;
int blue = rand() % 255;
vArray[k].color = sf::Color(red,green,blue);
}
Window.draw(vArray);
}
}
Window.display();
Window.clear();
}
}
我目前正在学习 VertexArray,目前正在努力解决我遇到的问题。问题是 VertexArray 不会绘制到屏幕上。我用精灵测试了代码,精灵被成功绘制到屏幕上。
#include <SFML/Graphics.hpp>
#include <string>
#include <iostream>
#include <ctime>
#include <cstdlib>
int main()
{
sf::Vector2i screenDimensions(800,600);
sf::Vector2i blockDimensions(10,10);
srand(time(0));
sf::RenderWindow Window;
Window.create(sf::VideoMode(screenDimensions.x,screenDimensions.y),"My first SFML game!");
while(Window.isOpen())
{
sf::Event Evnt;
while(Window.pollEvent(Evnt))
{
switch(Evnt.type)
{
case(sf::Event::Closed):
Window.close();
break;
}
}
for(int i=0; i< screenDimensions.x/blockDimensions.x; i++)
{
for(int j=0; j<screenDimensions.y/blockDimensions.y;j++)
{
sf::VertexArray vArray;
vArray[0].position = sf::Vector2f(i*blockDimensions.x,j*blockDimensions.y);
vArray[1].position = sf::Vector2f(i*blockDimensions.x + blockDimensions.x, j*blockDimensions.y);
vArray[2].position = sf::Vector2f(i*blockDimensions.x + blockDimensions.x, j*blockDimensions.y + blockDimensions.y);
vArray[3].position = sf::Vector2f(i*blockDimensions.x,j*blockDimensions.y + blockDimensions.y);
for(int k=0;k<4;k++)
{
int red = rand() % 255;
int green = rand() % 255;
int blue = rand() % 255;
vArray[k].color = sf::Color(red,green,blue);
}
Window.draw(vArray);
}
}
Window.clear();
Window.display();
}
}
下面是将四边形内的随机颜色绘制到屏幕上的简单代码。我遵循的教程是 CodingMadeEasy 的 this one。提前谢谢大家!
首先你创建了一个空的顶点数组。创建一个具有类型和初始顶点数 sf::VertexArray vArray (sf::Quads, 4);
你在实际绘制之前清除了 window,Window.display();
在 Window.clear();
之前。
这是工作代码:
#include <SFML/Graphics.hpp>
#include <string>
#include <iostream>
#include <ctime>
#include <cstdlib>
int main()
{
sf::Vector2i screenDimensions(800,600);
sf::Vector2i blockDimensions(10,10);
srand(time(0));
sf::RenderWindow Window;
Window.create(sf::VideoMode(screenDimensions.x,screenDimensions.y),"My first SFML game!");
while(Window.isOpen())
{
sf::Event Evnt;
while(Window.pollEvent(Evnt))
{
switch(Evnt.type)
{
case(sf::Event::Closed):
Window.close();
break;
}
}
for(int i=0; i< screenDimensions.x/blockDimensions.x; i++)
{
for(int j=0; j<screenDimensions.y/blockDimensions.y;j++)
{
sf::VertexArray vArray (sf::Quads, 4);
vArray[0].position = sf::Vector2f(i*blockDimensions.x,j*blockDimensions.y);
vArray[1].position = sf::Vector2f(i*blockDimensions.x + blockDimensions.x, j*blockDimensions.y);
vArray[2].position = sf::Vector2f(i*blockDimensions.x + blockDimensions.x, j*blockDimensions.y + blockDimensions.y);
vArray[3].position = sf::Vector2f(i*blockDimensions.x,j*blockDimensions.y + blockDimensions.y);
for(int k=0;k<4;k++)
{
int red = rand() % 255;
int green = rand() % 255;
int blue = rand() % 255;
vArray[k].color = sf::Color(red,green,blue);
}
Window.draw(vArray);
}
}
Window.display();
Window.clear();
}
}